Loading in 5 sec....

Operators and expressionPowerPoint Presentation

Operators and expression

- 293 Views
- Uploaded on
- Presentation posted in: General

Operators and expression

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Operators and expression

C Expression Formats

Primary Expression

Binary Expression

#include <stdio.h>

int main (void)

{

/*Local Definitions */

int a = 17;

int b = 5;

/* Statements */

printf("%d + %d = %d\n", a, b, a + b);

printf("%d - %d = %d\n", a, b, a - b);

printf("%d * %d = %d\n", a, b, a * b);

printf("%d / %d = %d\n", a, b, a / b);

printf("%d %% %d = %d\n", a, b, a % b);

printf("Hope you enjoyed the demonstration.\n");

return 0;

} /* main */

Assignment Expression

Examples of assignment expressions

Expansion of compound expressions

Expansion of compound assignment expressions

#include <stdio.h>

int main (void)

{

/* Local Definitions */

int x;

int y;

/* Statements */

x = 10;

y = 5;

printf("x: %2d | y: %2d ", x, y);

printf(" | x *= y: %2d ", x *= y);

printf(" | x is now: %2d\n", x);

x = 10;

printf("x: %2d | y: %2d ", x, y);

printf(" | x /= y: %2d ", x /= y);

printf(" | x is now: %2d\n", x);

x = 10;

printf("x: %2d | y: %2d ", x, y);

printf(" | x %%= y: %2d ", x %= y);

printf(" | x is now: %2d\n", x);

return 0;

} /* main */

Result of postfix a++

Postfix Expression

Expansion of postfix expressions

#include <stdio.h>

int main (void)

{

/* Local Definitions */

int a;

/* Statements */

a = 4;

printf("value of a : %2d\n", a);

printf("value of a++ : %2d\n", a++);

printf("new value of a: %2d\n\n", a);

return 0;

} /* main */

Unary expression

Result of prefix ++a

Expansion of prefix operator expressions

#include <stdio.h>

int main (void)

{

/* Local Definitions */

int a;

/* Statements */

a = 4;

printf("value of a : %2d\n", a);

printf("value of ++a : %2d\n", ++a);

printf("new value of a: %2d\n", a);

return 0;

} /* main */

- Precedence is used to determine the order in which different operators in a complex expression are evaluated
- Associativity is used to determine the order in which operators with the same precedence are evaluated in a complex expression

Example of precedence program

discussion

#include <stdio.h>

int main (void)

{

/* Local Definitions */

int a = 10;

int b = 20;

int c = 30;

/* Statements */

printf ("a * b + c is: %d\n", a * b + c);

printf ("a * (b + c) is: %d\n", a * (b + c));

return 0;

} /* main */

2 + 3 * 4

( 2 + ( 3 * 4 ) )

-b++

( -(b++) )

Association

a += b *= c -= 5

(a += (b *= (c -= 5 )))

(a = a + (b = b* (c = c – 5)))

If a = 3, b = 5, c = 8

(a = 3 + (b = (5 * (c = 8 – 5)))

3 * 8 / 4 % 4 * 5

((((3 * 8) / 4) % 4) * 5)

Left Associativity

Right Associativity

a * 4 + b / 2 – c * b

Value of variable: a=3 b=4 c=5

1 Replace the variable with values 3 * 4 + 4 / 2 – 5 * 4

2 Evaluate precedence operators

* , / binary expression Pr 13

( 3 * 4 ) + ( 4 / 2 ) – ( 5 * 4 )

12 + 2 – 20

3 Evaluate precedece operators (repeat step 2)

- + binary expression Pr 12

-6

Evaluating Expression (2)

--a * (3+b) / 2 – c++ * b

Value of variable: a=3 b=4 c=5

- 1 Rewrite
- Copy prefix increment or decrement and place them before expression.
- Replace each removed expression with the variable.
- (b) Copy postfix increment or decrement and place them after expression.
- Replace each removed expression with the variable.
- --a
- a * (3+b) / 2 – c * b
- c++
a=2 b=4 c=5

2. Replace variable with value & modify expression 2 * (3+4) / 2 – 5 * 4

c++

- 3. Evaluate parentheses 2 * 7 / 2 – 5 * 4
- c++
- 4. Evaluate precedence (repeat) 7 – 20 -13
- c++
- 5. Evaluate posteffect expression a=2 b=4 c=6

#include <stdio.h>

int main (void)

{

/* Local Definitions */

int a = 3;

int b = 4;

int c = 5;

int x;

int y;

/* Statements */

printf("Initial values of the variables: \n");

printf("a = %d\tb = %d\tc = %d\n\n", a, b, c);

x = a * 4 + b / 2 - c * b;

printf("Value of a * 4 + b / 2 - c * b: %d\n", x);

y = --a * (3 + b) / 2 - c++ * b;

printf("Value of --a * (3 + b) / 2 - c++ * b: %d\n", y);

printf("\nValues of the variables are now: \n");

printf("a = %d\tb = %d\tc = %d\n\n", a, b, c);

return 0;

} /* main */

Promotion hierarchy

#include <stdio.h>

int main (void)

{

/* Local Definitions */

char aChar = 'A';

int intNum = 200;

double fltNum = 245.3;

/* Statements */

printf("aChar contains : %c\n", aChar);

printf("aChar numeric : %d\n", aChar);

printf("intNum contains: %d\n", intNum);

printf("fltNum contains: %f\n", fltNum);

intNum = intNum + aChar; /* aChar promoted to int */

fltNum = fltNum + aChar; /* aChar promoted to float */

printf("\nAfter additions...\n");

printf("aChar numeric : %d\n", aChar);

printf("intNum contains: %d\n", intNum);

printf("fltNum contains: %f\n", fltNum);

return 0;

} /* main */

#include <stdio.h>

int main (void)

{

/* Local Definitions */

char aChar = '\0';

int intNum1 = 100;

int intNum2 = 45;

double fltNum1 = 100.0;

double fltNum2 = 45.0;

double fltNum3;

/* Statements */

printf("aChar numeric : %3d\n", aChar);

printf("intNum1 contains: %3d\n", intNum1);

printf("intNum2 contains: %3d\n", intNum2);

printf("fltNum1 contains: %6.2f\n", fltNum1);

printf("fltNum2 contains: %6.2f\n", fltNum2);

fltNum3 = (double)(intNum1 / intNum2);

printf

("\n(double)(intNum1 / intNum2): %6.2f\n", fltNum3);

fltNum3 = (double)intNum1 / intNum2;

printf("(double) intNum1 / intNum2 : %6.2f\n", fltNum3);

aChar = (char)(fltNum1 / fltNum2);

printf(" (char)(fltNum1 / fltNum2): %3d\n", aChar);

return 0;

} /* main */

Expression statement

a=2;

a = b = 3;

a = (b=3);

Compound statement