More about Numerical Computation CS-2301, B-Term More about Numerical Computation CS-2301, System Programming for Non-Majors (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie and from C: How to Program, 5 th and 6 th editions, by Deitel and Deitel)
More about Numerical Computation CS-2301, B-Term Reading Assignment Chapter 2 of Kernighan & Ritchie
More about Numerical Computation CS-2301, B-Term More Numerical Operators Relational operators –, >=, ==, != –Return 0 if false, 1 if true Let int a = 3; Then a = 3 returns 1 a == 3 returns 1 a != 3 returns 0
More about Numerical Computation CS-2301, B-Term More Numerical Operators Relational operators –, >=, ==, != –Return 0 if false, 1 if true Let int a = 3; Then a = 3 returns 1 a == 3 returns 1 a != 3 returns 0 Relational operators are not special in C. They are just like any other operators in expressions
More about Numerical Computation CS-2301, B-Term Precedence of Relational Operators Comparisons: lower than arithmetic operators Equality-inequality: lower than comparisons See Table 2-1, p.53 Examples i < lim - 1 means i < (lim – 1) X + (y >= 3) returns the value X (when y = 3 )
More about Numerical Computation CS-2301, B-Term Increment & Decrement Operators ++x, --x, x++, x-- Increments or decrements x by 1 ++x – increments x, returns new value of x x++ – increments x, returns old value of x Used in many situations, especially for loops --x – decrements x, returns new value of x x-- – decrements x, returns old value of x High precedence than *, /, % –Associates right to left
More about Numerical Computation CS-2301, B-Term Bitwise Operations & – bitwise AND | – bitwise OR (inclusive) ^ – bitwise exclusive OR << – left shift Same as multiplying by 2 (i.e., fills low-order bits with zeros) >> – right shift Machine dependent fill on left, depends upon sign bit ~ – one’s complement May only be applied to integral types i.e., int, short, long, char signed or unsigned
More about Numerical Computation CS-2301, B-Term Conditional Expressions expr 1 ? expr 2 : expr 3 –Evaluate expr 1. –If result is true, evaluate and return expr 2 –Otherwise evaluate and return expr 3 Example, –z = (a < b) ? a : b –Assigns z the value of a if a < b, or b otherwise See tricky code at end of §2.11 –For use in Programming Assignment #2
More about Numerical Computation CS-2301, B-Term Assignment Operator (yet again) location += expression means –Add expression to the value at location and assign the result back into the same location Similarly for -=, *=, /=, %=, ^=. |=, >= E.g., x *= a is the same as x = x * a y /= b is the same as y = y * b z <<= 3 is the same as z = z << 3 Exceptions will become apparent later in the course
More about Numerical Computation CS-2301, B-Term Type Conversion May be automatic or explicit See §2.7 Automatic, for signed operands:– If either is long double, convert other to long double Else if either is double, convert other to double Else if either is float, convert other to float Otherwise, convert char and short to int and then if either is long, convert other to long I.e., “promote” numerical types from lower to higher
More about Numerical Computation CS-2301, B-Term Type Conversion (continued) Automatic type conversion of unsigned integer values is Tricky and Machine dependent
More about Numerical Computation CS-2301, B-Term Explicit Type Conversion Definition – cast A unary operator applied to an expression to explicitly force the value to a particular type Represented as (type) expression High precedence, equal to unary operators Associates right-to-left Example (int) sqrt(2*pi) Converts the square root of 2π to an integer and truncates the fractional part (i.e., no rounding)
More about Numerical Computation CS-2301, B-Term Questions? Read or review Chapter 2