Statements in C, like statements in any other programming language, consist almost entirely of expressions and special reserved words. Declarations in C, unlike declarations in other languages, also contain arbitrary expressions. Thus, studying the means by which C expressions are constructed and evaluated is especially important-particularly since the number of permissible C operators is so large. Since all of the operands in a C expression (excluding constants) must be properly declared before they are used, and since declarations themselves contain expressions, the teaching of C involves the following chicken-and-egg problem: Should one begin by considering only elementary declarations, in which case the topic of expression construction and evaluation cannot be fully treated in one place, because the operators that pertain to the more complex objects-like pointers and structures (whose declarations have not yet been introduced)--have not yet been covered, or should one postpone entirely the issue of how decla#65533; rations are written (merely assuming that all of the objects under discussion have been properly declared) in order to fully treat all types of operands and operators in one comprehensive discussion? If the student is encouraged to begin writing programs immediately, the former choice is mandatory, because even the most elementary programs must vII Preface viii contain proper declarations. Thus, most C textbooks postpone the discussion of objects like arrays, structures, and pointers (and of the operators that pertain to them) until the second half of the book is reached.