Download presentation
Presentation is loading. Please wait.
1
Operators And Expressions
2
Operators Arithmetic Operators Relational and Logical Operators
Special Operators
3
Arithmetic Operators Operator Action – Subtraction, also unary minus
+ Addition * Multiplication / Division % Modulus -- Decrement ++ Increment
4
Precedence and Associativity
Arithmetic Operators: High - (unary minus) * / % Low - a * b – c ((- a) * b) – c
5
Expressions inside parentheses are evaluated first.
1 * (2 - 3) Operators on the same level of precedence are evaluated from left to right. (Associativity). –5 (((1 + 2) + 3) + 4) –5
6
Increment & Decrement Operators
Provide a concise notation for incrementing or decrementing a variable by 1. Are unary operators. ++x or x x or x-- Can be applied to variables but not to constants or ordinary expressions. ++i; legal cnt--; legal 777++; illegal ++(a * b -1); illegal
7
May either prefix or postfix the operand.
Prefix ++x; or Postfix x++; x = x + 1; ++ & -- both cause a value of a variable to change in memory. ( Have a side effect).
8
Increment Postfix: i++;
Expression value is the current value (Before you increment) then it increments. “use - then increment” Increment Prefix: ++i; Expression value is the value After you increment. “increment - then use” Decrement Postfix: i--; “use - then decrement” Decrement Prefix: --i; “decrement - then use”
9
Examples x =10; y = ++x; y 11 x =10; y = x++; y 10
int i = 3, j = 2, k; i++; i j = ++i; j i k = i++; k i k = (--j+3) k j 4 5 5 5 6 7 4
10
After the assignment to x. m
l = 4; n = 3; m = 2; x = l * n + m++; x After the assignment to x. m 14 3
11
int a, b, c=0; a = ++c; b = c++; a = ? b = ? c= ? int b = 2, d = 4; 7--b*++d ((-b)*(++d)) ? int j = 2, k = 3, m = 4; j*=k=m j=(j*(k=(m+5))) ?
12
int a,b; a = 1; b = 12; printf (“a+++b = %d/n”, a+++b); printf (“a++ +b = %d/n”, a++ +b); printf (“a+ ++b =% d/n”, a+ ++b);
13
Relational and Logical Operators
Relational refer to the relationship that value can have with one another. Logical refers to the ways these relationships can be connected. True is any value other than zero. False is zero.
14
Relational Operators:
> Greater than >= Greater than or equal < Less than <= Less than or equal = = Equal != Not equal Logical Operators: && AND || OR ! NOT
15
The truth table for the logical operators. True(1), False(0).
p q p&&q p || q !p
16
Precedence and Associativity
High ! > >= < <= = = != && Low || !0&&0|| ((!0)&&0)||0 FALSE
17
Associativity: left to right.
int x; x = 100; printf(''%d", x>10); __? Both are lower in precedence than the arithmetic operators. 10 > > (1 + 12) FALSE 0 Associativity: left to right.
18
Examples !A is false (0) if A’s value is: __.
is true (1) if A’s value is: __. !!5 ! (!5) ! (0) 5 && 3 ?
19
int i, j = 1; j = j && (i = 2); 1) (i=2) i 2) && j && 2 true && true 1
( ) needed 2 1
20
j i j = j && (i = = 3); 1) (i = = 3) false 0 2) && j && 0 0 3) = j 1 2
( ) not needed
21
j i j = j || (i/2); 1) (i/2) (2/2) 1 2) || j || 1 true 1 3) = j 2
2 ( ) not needed 1
22
j i j = !j && (i = i + 1); 1) i + 1 3 2) = i 3) ! !j !1 0 4) && 0 && 3
4) && 0 && 3 5) = j 1 2 3
23
Lowest precedence of all the operators.
The Comma Operator Lowest precedence of all the operators. Causes a sequence of operations, “do this and this and this…”. Is a binary operator. expression_1, expression_2 Associates left to right. expression_1 is evaluated first expression_2 is evaluated second x = (y=3 , y+1); x 4 ( ) needed
24
The Comma Expression as a whole has the value and type of expression_2.
int i = 2; j = 4; j = i++, i - j; * i * j (3-4) higher precedence than , operator 3 2
25
It allows multiple initializations and multiple processing of indices.
for (sum=0 , i=1; i<=n; ++i) sum += i; Comma Operators can be useful in control statements though many “C” advocates discourage their use.
26
e.g. int i; i = 0; for ( ; i < 10; putchar (‘a’ + i), i++); will output? 3rd expression in the for statement is a comma expression. putchar is called ,executed.Then i is increased. Most commas in a program DO NOT represent comma operators. see text - pg. 99
27
The ( ) and [ ] Operators Parentheses are operators that increase the precedence of the operations inside them. Square brackets perform array indexing (See Chapter 9 for a discussion of array.) int main(void) { char s[80]; s[3] = 'X'; printf(''%c", s[3]); return 0; }
28
The Conditional Operator ?
Ternary operator. A powerful and convenient operator that replaces certain statements of the if-then-else form. Exp1 ? Exp2: Exp3 Stands for: if Exp1 then Exp2 else Exp3
29
Examples x = 10; x = 10; if(x>9) y = x>9 ? 100 : 200;
y = 100; else y = 200; x = 10; y = x>9 ? 100 : 200;
30
int i, h, j = 2; i = (j==2) ? 1:3; k = (i>j) ? i:j; i get 1
( ) not needed i get 1 k get max of I or j
31
This statement does what?
c = (c > =‘a’ && c < = ‘z’) ? c - (‘z’ - ‘Z’):c; IF True - have a Lower case letter in the variable “C”. Exp 2: c - (‘z’ - ‘Z’) will give Capital Letter of whatever is in C. e.g. a - (‘z’ - ‘Z’) 97 - (122 – 90) = 65 which is ‘A’. IF False – Capital Letter and leaves it alone.
32
Expressions vs. Statements
An expression in C is any valid combination of operators, constants, functions and variables. A statement is a valid expression followed by a semicolon. Func1(); A function call as a statement. Y = X + Y; An assignment statement. B + Func1(); Valid?
33
Null Statement: ; [A semi-colon alone by itself].
Can be useful in loops & conditional statements. The body of a loop could be empty. Scanf(“%d”, &x); While(printf(“%d”,x) , scanf(“%d”,&x)==1) ;
34
Spacing and Parentheses
Redundant or additional parentheses do not cause errors or slow down the execution of an expression. x=10/y-(127/x); x = 10 / y - (127/x); x = y/3-34*temp+127; x = (y/3) - (34*temp) + 127;
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.