Lecture 3: More on operators and expressions ECE 209 January 20, 2010 ECE 209: Computer Systems Programming Tuck Assignments •HW0 -- Due 3/28 •HW1 -- Due 1/25 •CodeLab • Ch 2,3 -- Jan 25 •Reading: • PP: Ch 12, C: 2,3,5 • For next time: PP: 13, C: 6 2 ECE 209: Computer Systems Programming Tuck Types of data •More about types • char = signed character, at least 8 bits (usually assumed to be 1 byte) • ASCII character: ‘A’ -- place one character in single quotes (**preferred coding) • Decimal value: 65 • Octal ASCII value: ‘\0101’ • Hexadecimal ASCII value: ‘\x41’ • Also other special characters: ‘\n’ -- newline, ‘\t’ -- tab 3 ECE 209: Computer Systems Programming Tuck Types of data •More about types • double (or float) = signed floating point • Decimal: 1.23 • Scientific: 1.0e23 , which means 1.0 x 10 23 • Other Examples • 2.0E20 • 3.4e-9 • -1. • .23 • 3.14159e0 4 ECE 209: Computer Systems Programming Tuck Excercise •Declare a variable to hold Avogadro’s number. 5 ECE 209: Computer Systems Programming Tuck Printing other types #include int main(void) { int days_in_a_week = 7; double avocado = 6.02e23; char initial = ‘T’; /* need a different escape code for each type so that printf knows how to treat it */ printf(“days in a week = %d\n”, days_in_a_week); printf(“Avocado’s Number = %e\n”, avocado); printf(“My last initial = %c\n”, initial); return 0; /* exit the program */ } 6 ECE 209: Computer Systems Programming Tuck Operators •C provides operators to manipulate variables of all types (unless specified otherwise) • Assignment • Arithmetic operations: addition, subtraction, multplication, division, etc. • Logical operations: and, or, negation • Bitwise operators: and, or, xor, inversion • Parenthesis to group operations • Relational operators: less than, greater than, equal, not equal 7 ECE 209: Computer Systems Programming Tuck Operators --- actions to be performed on data •Assignment: lvalue = rvalue • Rvalue: the right side of an assigment, it can be any value • Lvalue: must be a variable (is associated with a memory location) • After the operation, Lvalue is equivalent to rvalue x = 100; y = 5; x = y * 2; /* after this statement, x contains 10 */ 8 ECE 209: Computer Systems Programming Tuck Arithmetic operators •Binary arithmetic operations: +, -, *, /, % • Addition: + • Subtraction: - • Division: / • For integers, it throws away the remainder: 7/3 = 2 • For floats, 7/3 = 2.333... • Modulo: % • Computes the remainder and is only available for int and char • If mixed types are in a C operation, smaller precision is promoted to larger precision (e.g. int is converted to float, char is promoted to int) 9 ECE 209: Computer Systems Programming Tuck Arithmetic operators •Unary operators • + : positive • - : negative 10 ECE 209: Computer Systems Programming Tuck C Expressions •An expression can be one of the following things in C • a variable • a value (literal) • an operation on values or variables or both • a function call • an operation on expressions (yes, this is a recursive definition) ➡ Important: An expression is NOT a statement ‣ But, you can add a semicolon to any expression to create a statement 11 ECE 209: Computer Systems Programming Tuck More on expressions •Which of the following are expressions, and if so, what are their types? printf(“I’m an expression”) 0+1 ‘A’; ‘A’ * 3 x = 3.5e4-.5; 12 ECE 209: Computer Systems Programming Tuck How to interpret an expression •What does this expression evaluate to: 2 + 3 - 4 + 5 13 ECE 209: Computer Systems Programming Tuck Operator precedence •Precedence determines the order operators are evaluated • I.e. it answers the question: where are the implicit parentheses? • Provides a rigorous way for programmer & compiler to agree on the meaning •Precedence becomes more important as we learn more operators • For arithmetic operations precedence works as you expect (from algebra) 14 ECE 209: Computer Systems Programming Tuck Precedence table 15 Operators Associativity () Left to Right + - (Unary) Right to Left * / Left to Right + - (Binary) Left to Right = Right to Left Highest Precedence (Apply first) Lowest Precedence (Apply last) ECE 209: Computer Systems Programming Tuck Example a + b - c + d 16 ECE 209: Computer Systems Programming Tuck Example y = 6 * 12 + 5 * 20 + 1 17 ECE 209: Computer Systems Programming Tuck Example x = y = x + y 18 James Tuck ECE209_Lecture3.key