Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Lecture 3  Lexical elements  Some operators:  /, %, =, +=, ++, --  precedence and associativity  #define  Readings: Chapter 2 Section 1 to 10.

Similar presentations


Presentation on theme: "1 Lecture 3  Lexical elements  Some operators:  /, %, =, +=, ++, --  precedence and associativity  #define  Readings: Chapter 2 Section 1 to 10."— Presentation transcript:

1 1 Lecture 3  Lexical elements  Some operators:  /, %, =, +=, ++, --  precedence and associativity  #define  Readings: Chapter 2 Section 1 to 10.

2 2 Syntax of C  Like any language, C has an alphabet and rules for putting together words and punctuation to make legal program; that is called syntax of the language  C compilers detect any violation of the syntactic rule within the program  C compilers collect the characters of the program into tokens, which form the basic vocabulary of the language  Tokens are separated by space

3 3 Tokens  Tokens in C can be categorized into:  keywords, e.g., return, int  identifiers, e.g., user-defined variables, identifiers used in preprocessing statements and function names  character constants, e.g. ‘c’  string constants, e.g., “Hello”  numeric constants, e.g., 7, 11, 3.14  operators, e.g., = (assignment operator), ++ (increment operator)  punctuators, e.g., ; and,

4 4 Keywords

5 5 Keywords ( cont’d )  There are only 32 keywords (C is small)  Each keyword in C has a reserved meaning and cannot be used as identifiers  Most of the keywords given in the previous page will be covered in this course; some keywords are deliberately omitted  Note: main is NOT a keyword. However, every program will use it as a function name. Therefore you should not use it as variable names.

6 6 Identifiers  An identifier is composed of a sequence of letters, digits and underscore  An identifier must begin with either a letter or an underscore (not recommended)  Identifiers give unique names to various objects in a program; reserved keywords such as float and int cannot be used as identifiers  In ANSI C, at least the first 31 characters of an identifier are discriminated  Always use meaningful names for identifiers!!!

7 7 Constants  Constants can be numeric-, character- or string- based, e.g., 13, 7.11, ‘\n’, “Tuesday”  Numbers are represented in decimal system but octal (preceded by 0) or hexadecimal integers (preceded by 0x) can also be represented, e.g., the following number are equal to a decimal 26 032 /* an octal integer */ 0x1a /* an hexadecimal integer */

8 8 Constants ( cont’d )  Character constants are enclosed by single quotation marks, e.g., ‘a’, ‘\n’, ‘\t’  String constants are delimited by double quotes, e.g. “Hello world\n”  String is treated as an array of characters in C  If “ or newline characters are to be used within a string, it has to be preceded by a backslash \

9 9 Operators  Some types of operators:  Arithmetic, e.g. +, -, *, /, %, ++, --  Assignment, e.g., =  Relational  Boolean (logical) and a few more …  Some symbols have meaning that depends on context, e.g., printf(“%d”, 40%7);

10 10 Punctuators  Punctuators such as, and ; are used to separate language elements, e.g., int a, b = 4, c = 4; a = b + c;

11 11 The / operators  The “ division ” operator, /, is used to compute the quotient when one number is divided by another  Example 1: float a = 20, b = 7, c; c = a/b; printf(“%f”, c); /* 2.857143 */  Example 2: int a = 20, b = 7; float c; c = a/b; printf(“%f”, c); /* 2.000000 */

12 12 The % operators  The “ modulus ” operator, %, is used to compute the remainder when one integer is divided by another  Example: int a = 41, b = 7; printf(“%d”, a%b); /* 6 */ printf(“%d”, 49%b); /* 0 */  Question: What is the value of -30%7 ?  Cannot be applied on floating point values

13 13 Expressions & statements  An expression is a meaningful combination of operators, variables and/or constants  E.g. a + b - 10  Every expression has a value  A valid expression followed by a semicolon is a statement.  E.g. a + b - 10; ( although this is not very useful)  There are other forms of statements. In general, a statement specifies some actions.

14 14 Assignment operator  The following is an assignment expression: a = 1 involving variable a, constant 1 and the assignment operator =  The value of the above expression is defined as 1.  The expression followed by a semicolon: a = 1; is an assignment statement.  Further examples: a = (b=32) + (c=23); a = b = c = 0;

15 15 Efficient assignment operators  Generic form of efficient assignment operators variable op= expression; where op is operator; the meaning is variable = variable op (expression);  Efficient assignment operators include += -= *= /= %= >>= <<= &= ^= |=

16 16 Efficient assignment operators  Examples: a += 5; is same as a = a + 5; a -= 5; is same as a = a - 5; a += b*c; is same as a = a + (b*c); a *= b+c; is same as a = a * (b+c);

17 17 Increment & decrement operators  In terms of the actions done on variable k,  k++ and ++k are equivalent to k=k+1  k-- and --k are equivalent to k=k-1  Post-increment and post-decrement: k ++ and k--  k ’ s value is altered AFTER evaluating the expression  int k=1, j; j=k++;/* result: j==1, k==2 */  Pre-increment and pre-decrement: ++ k and --k  k ’ s value is altered BEFORE evaluating the expression  int k=1, j=0; j=++k;/* result: j==2, k==2 */

18 18 Precedence & associativity of operators  An expression may have more than one operator and its precise meaning depends on the precedence and associativity of the involved operators  What is the value of variable d after executing each of the following statements int a = 1024, b = 8, c = 2, d; d = a*b+c; d = a–b–c; // (a-b)-c or a-(b-c)? d = a/b/c; // (a/b)/c or a/(b/c)?

19 19 Table of Precedence & Associativity  See p.397 of [Kelly & Pohl 2001] for a complete table with all operators in C.

20 20 Some good programming habits  Always use brackets ( ) to express your exact intention if you are not sure about the precedence/associativity  Try to avoid very complex expressions

21 21 Using #define directives  Two purposes: to define  symbolic constants, and  macros  The directives #define MAX_SCORE 100 causes all occurrences of MAX_SCORE in the C program to be replaced by 100 BEFORE the program is compiled.  It is a convention to name a symbolic constant with upper case letters.

22 22 Example use of #define /* To convert length in inches to cm */ #include #define RATIO 2.54 int main(void) { float inches, cm; printf(“Enter length in inches: ”); scanf(“%f”, &inches); cm = RATIO*inches; printf(“approximately %f in cm\n”, cm); return 0; }


Download ppt "1 Lecture 3  Lexical elements  Some operators:  /, %, =, +=, ++, --  precedence and associativity  #define  Readings: Chapter 2 Section 1 to 10."

Similar presentations


Ads by Google