# More about Numerical Computation CS-2301, B-Term 20091 More about Numerical Computation CS-2301, System Programming for Non-Majors (Slides include materials.

## Presentation on theme: "More about Numerical Computation CS-2301, B-Term 20091 More about Numerical Computation CS-2301, System Programming for Non-Majors (Slides include materials."— Presentation transcript:

More about Numerical Computation CS-2301, B-Term 20091 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 20092 Reading Assignment Chapter 2 of Kernighan & Ritchie

More about Numerical Computation CS-2301, B-Term 20093 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 20094 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 20095 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 20096 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 20097 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 20098 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 20099 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 200910 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 200911 Type Conversion (continued) Automatic type conversion of unsigned integer values is Tricky and Machine dependent

More about Numerical Computation CS-2301, B-Term 200912 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 200913 Questions? Read or review Chapter 2