0% found this document useful (0 votes)
21 views

CLang Lect05

The document discusses expressions in C programming. It defines expressions as combining values using operators and functions to return a known type. It describes operators as taking operands and producing a result. Arithmetic expressions return numerical values using operators like +, -, *, /, %. Comparison operators like <, <=, >, >=, ==, != are also discussed. Logical expressions return true or false using logic operators &&, ||, !. Bit operators operate on bits rather than boolean values. Common expression errors involve assignment versus equality, order of operations, and type casting.

Uploaded by

Thành
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views

CLang Lect05

The document discusses expressions in C programming. It defines expressions as combining values using operators and functions to return a known type. It describes operators as taking operands and producing a result. Arithmetic expressions return numerical values using operators like +, -, *, /, %. Comparison operators like <, <=, >, >=, ==, != are also discussed. Logical expressions return true or false using logic operators &&, ||, !. Bit operators operate on bits rather than boolean values. Common expression errors involve assignment versus equality, order of operations, and type casting.

Uploaded by

Thành
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Expressions

Department of Information System


SoICT, HUST

1
Expressions
• Combine values using operators and function calls
• Return a value of a known type (int, double, float,
pointer)
• Example:
• (3+4)/2 returns an integer value (3).
• + and / are operators, 3, 4, 2 are operands.

2
Expressions
• An operator is something which takes one or more
values and does something useful with those values
to produce a result

• Each thing which is operated upon by an operator is


called an operand

• Operation is the action which was carried out upon


the operands by the operator

3
Arithmetic Expressions
• take arithmetic (numerical) values
• return an arithmetic (numerical) value
• Are composed using the following operators:
• + (unary plus)
• - (unary minus)
• + (addition)
• - (subtraction)
• * (multiplication)
• / (division or quotient)
• % (modulus or remainder)

4
Example
1 + 2 * 3 - 4 / 5
= 1 + (2 * 3) - (4 / 5)

6.2

5
Example (con’t)
1 + 2 * 3 - 4 / 5 =
1 + (2 * 3) - (4 / 5)

Divide two integers,


the result is also an
integer

6
Example (con’t)

1 + 2 * 3 - 4 / 5 =
1 + (2 * 3) - (4 / 5)
7
= 0

7
Example (con’t)

• Use a real number to create an expression that


return a real value

1 + 2 * 3 - 4.0 / 5
= 1 + (2 * 3) - (4.0 / 5)
= 1 + 6 - 0.8
= 6.2

8
Comparison operators
• < (less than)
• <= (less than or equal)
• > (greater than)
• >= (greater than or equal)
• == (equal)
• != (in-equal)

9
Example
1+2<3
= (1 + 2) < 3
=3<3=0

• Not to be confused between == and = (assignment)

10
Example
Prevent
misconsidering
as assign
operator (=)
3 == 4 → 0

3 != 4 → 1

3 < 4 → 1

3 < 4 && 5 > 2 → 1

11
Logic
• A special data type that has only two values:
• true
• false
• It is used to create the selection of conditions or the
loop for an algorithm
• Boolean expression: is an expression that return
only true/false

12
Use int as logic
• In C, logic values are represented by integer
• 0 is false
• any non-zero value is taken interpreted as true (often use
1)
• All expressions in C return a number
• A “true” logic expression will return 1, otherwise 0

13
Logic operators
• … is used to built logic expression
• && (and)
• || (or)
• ! (not)
• comparison (==, !=, <, >, <=, >=)

14
Example
(3 ==3) && (1+ 2) < 3
= 1 && (3 < 3)
= 1 && 0 = 0

15
Example
Prevent
misconsidering
as and bit (&)
Prevent
misconsidering
Prevent 5 && 4 → 1 as or bit (|)
misconsidering
as reverse bit
(~) 1 || 4 → 1

! 0 → 1

! 0 || 0 && 2 → 1

16
Bit operators

An expression that only uses bit operators is not


logic expression. Result of this expression is an
integer.
& (and bit)
| (or bit)
~ (negation)
>> (shift right)
<< (shift left)

17
Bit operators
• Not to be confused with boolean operators: &&, ||, !
• Example:
5 = 101
& 4 = 100
-------------
= 4 = 100

1|4→?
5 & (4 >> 1) → ?

18
Common errors
#include <stdio.h>

/* Common errors */

int main()
{
Return value is
int score;
always 1
scanf("%d", &score);

if ( score == 9 || 10 )
{
printf(“Excellent\n");
}
Return value is
return 0;
0 or 1
}
20
Common errors (con’t)
#include <stdio.h>

/* Correct program */

int main()
{
int score;

scanf("%d", &score);

if ( score == 9 || score == 10 )
{
printf(“Excellent\n");
}
return 0;
}
21
Common errors (con’t)
#include <stdio.h>

/* Common errors */

int main()
{
Return value is
int score; always 1

scanf("%d", &score);

if ( 8 <= score <= 10 )


{
printf(“Good\n");
} Return value is
return 0; 0 or 1
}
22
Common errors (con’t)
#include <stdio.h>

/* Correct program */

int main()
{
int score;

scanf("%d", &score);

if ( 8 <= score && score <= 10 )


{
printf(“Good\n");
}
return 0;
}
23
Assignment expressions
• Assignment = is also an operator that returns the
assignment value.
• This operator can be used to create an expression that return
a value: result of the assignment is the right value of the
expression
• Example:
(x = 4) → 4
(y = 0) → 0
a = b = 5 ➔ a = (b = 5) ➔ a = 5
• Can create an expression with a series of assignment
x=y=z=4

24
Common errors (con’t)
#include <stdio.h>

/* Common errors */

int main()
{
int score; Incorrect
wrote as an
scanf("%d", &score); assignment

if (score = 9 || score = 10)


{
printf(“Good!\n");
}
return 0;
}
25
Common errors (con’t)
#include <stdio.h>

/* Probably the most common C error. */

int main()
{
int score;

scanf("%d", &score);

if (score == 9 || score == 10)


{
printf(“OK!\n");
}
return 0;
}
26
Some extend assignment operators
Operator Example Equal expression

+= x += 5 x=x+5

-= x -= 5 x=x-5

*= x *= 5 x=x*5

/= x /= 5 x=x/5

%= x %= 5 x=x%5

27
Increment, decrement operators
• ++ is the increment operator
• ++i is equivalent to i = i + 1
• -- is the decrement operator
• --j is equivalent to j = j - 1
• Two ways of writing: prefix (++i) and suffix (i++)
• They are different in return values of expressions.
Example, if i = 5
• Prefix return value after adding 1, (++i) → 6
• Posfix return value before adding 1, (i++) → 5
• In both cases, value of i increases by 1

28
Example
int i = 5;
++i;
printf(“%d”, i);

• Output: 6

29
Conditional Expressions
• … a ternary operator
Condition ? Expr2 : Expr3
• Example:
int max,a,b;

max = ( a > b ) ? a : b;

30
Casting data type
• Assignment is only carried out in variables and values
in the same data type
• C can automatically convert data type for assignment
if this conversion do not loose information. Example,
convert from int to float
int a;
float f;
f = a; /* OK */
a = f; /* not OK */
• In case of loosing information, casting data type is
needed. Example, convert from float to int.
a = (int) f;

31
Precedences
• Unary operators (!, -)
• Multiply, divide (*, /, %)
• Addition, subtraction (+, -)
• Comparison 1 (<, <=, >, >=)
• Comparison 2 (==, !=)
• And (&&)
• Or (||)

32
Example
• 7+5&&4<2+3-2/3||5>2+1
• (7+5)&&4<2+3-(2/3)||5>(2+1)
• 12&&4<(2+3-0)||(5>3)
• 12&&(4<5)||1
• (12&&1)||1
• 1||1 = 1

33
Exercise
• 3&&7+4/3-2>6+-3*10%2
(!, -)
• 2+3/5>6-10/2||3/7&&4
(*, /, %)
• (3<<1)&(4>>2)|5 (+, -)
• (1>4)&&(2||(3<4)) (<, <=, >,
>=)
(==, !=)
And (&&)
Or (||)

34
Thank you
for your
attentions!

You might also like