130 likes | 143 Views
Learn about numerical computation in C, including relational operators, bitwise operations, conditional expressions, type conversion, and more. Includes materials from "The C Programming Language" and "C: How to Program".
E N D
More about Numerical Computation CS-2301 System Programming C-term 2009 (Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and from C: How to Program, 5th and 6th editions, by Deitel and Deitel) More about Numerical Computation in C
Reading Assignment • Chapter 2 of Kernighan & Ritchie More about Numerical Computation in C
More Numerical Operators • Relational operators • <, <=, >, >=, ==, != • Return 0 if false, 1 if true • Let int a = 3; • Then a < 3 returns 0a >= 3 returns 1a == 3 returns 1a != 3 returns 0 More about Numerical Computation in C
More Numerical Operators Relational operators are not special in C. They are just like any other operators in expressions • Relational operators • <, <=, >, >=, ==, != • Return 0 if false, 1 if true • Let int a = 3; • Then a < 3 returns 0a >= 3 returns 1a == 3 returns 1a != 3 returns 0 More about Numerical Computation in C
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)and the value X+1 (when y >= 3) More about Numerical Computation in C
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 in C
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 in C
Conditional Expressions • expr1 ? expr2 : expr3 • Evaluate expr1. • If result is true, evaluate and return expr2 • Otherwise evaluate and return expr3 • 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 in C
Exceptions will become apparent later in the course 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 More about Numerical Computation in C
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 in C
Type Conversion (continued) • Automatic type conversion of unsigned integer values is • Tricky and • Machine dependent More about Numerical Computation in C
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 in C
Questions? Read or review Chapter 2 More about Numerical Computation in C