ử ử

Toán t Toán t

ứ ể ứ ể  và Bi u th c  và Bi u th c

ươ

Ch

ng 3

1

Operators and Expression

ụM c Tiêu M c Tiêu

c toán t  gán   ứ ố ọ ể c bi u th c s  h c ệ  quan h  và lu n lý  c toán t

ử ậ

ượ

lu n lý nh  phân và bi u

c toán t

ể ượ ể ượ ộ ư

 Hi u đ ể ượ  Hi u đ ể ượ  N m đ ượ ắ (Relational and Logical Operators)  N m đ ắ th c (Bitwise Logical Operators and Expression)  Hi u đ c khái ni m ép ki u (Cast)  Hi u đ c đ   u tiên c a các toán t

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 2

ứ ứ

ể ể

Bi u th c (Expressions) Bi u th c (Expressions)

ự ế ợ

S  k t h p các toán t

và các toán h ng

Toán Tử

Ví dụ:  2 * y + 5

Toán h ng ạ

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 3 of 25

Toán t Toán t

gánử  gánử

ớ ấ

gán (=) có th  đ

c dùng v i b t

ợ ệ

Toán t ứ ỳ ể k  bi u th c C h p l

ể ượ  nào

(Tên bi n)ế

(Bi u th c)

ị (Giá tr  ph i)

ị (Giá tr  trái)

(Toán t

gán)

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 4 of 25

Gán liên ti pế Gán liên ti pế

ới cùng m t giá

c gán v ệ

ể ượ ộ

ơ

ế Nhi u bi n có th  đ tr  trong m t câu l nh đ n

Tuy nhiên, không th  áp d ng quy t c trên khi  khai báo bi n ế

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 5 of 25

ố ố

ử ử

ể ể B n Ki u Toán T B n Ki u Toán T

ố ọ S  h c  (Arithmetic)

ậ Lu n Lý (Logical)

Nh  phân (Bitwise)

Quan h  ệ (Relational)

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 6 of 25

ể ể

ứ ố ọ ứ ố ọ Bi u th c s  h c Bi u th c s  h c

ể ượ

c bi u di n

ử ụ

ứ ố ọ Bi u th c s  h c có th  đ trong C b ng cách s  d ng các toán t

ễ ử ố ọ  s  h c

Ví d  :ụ

++i % 7

5 + (c = 3 + 8)

a * (b + c/d) ­ 22

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 7 of 25

Toán t Toán t

ử s  h c  ử ố ọ ố ọ s  h c

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 8 of 25

ử ử

ệ ệ

ậ ậ

Toán t Toán t

quan h  và lu n lý  quan h  và lu n lý

ượ ể

ệ ữ

ế

ế

Ð c dùng đ  : ố Ki m tra m i quan h  gi a hai bi n hay gi a m t bi n  ộ ằ và m t h ng

quan h

ớ ớ

ặ ằ

ặ ằ

Toán t Ý nghĩa ơ L n h n ơ L n h n ho c b ng ỏ ơ Nh  h n ỏ ơ Nh  h n ho c b ng B ngằ Không b ngằ

Toán tử > >= < <= == !=

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 9 of 25

ử ử

ệ ệ

ậ ậ

Toán t Toán t

quan h  và lu n lý (tt.)  quan h  và lu n lý (tt.)

ệ  lu n lý là nh ng ký hi u dùng đ  k t h p hay

ử ậ ể

ữ ứ

ể ế ợ ệ

Toán t ứ ủ ị ph  đ nh bi u th c ch a các toán t

quan h

ả ả

ế ế

ả ỉ ộ

Toán tử Ý nghĩa && ||

!

ể , chuy n đ i

ượ ạ c l

AND: K t qu  là True khi c  2 đi u ki n đ u đúng OR : K t qu  là True khi ch  m t trong hai đi u  ki n là đúng ị ộ NOT: Tác đ ng trên các giá tr  riêng l i.  True thành False và ng Ví d :ụ  if (a>10) && (a<20)

ử ậ

ứ Nh ng bi u th c dùng toán t

ả ề  lu n lý tr  v

0 thay cho false và 1 thay cho true

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 10 of 25

ử ậ ử ậ

ị ị

Toán t Toán t

lu n lý nh  phân  lu n lý nh  phân

ữ ệ

c x  lý sau khi đã chuy n đ i

ả ề ế

ế

ỉ ượ ử D  li u ch  đ ị Ố giá tr  S  thành giá tr  NH  PHÂN Mô tả Toán tử ỗ ị M i v  trí c a bit tr  v  k t qu  là 1 n u bit c a  Bitwise AND  ạ hai toán h ng là 1. ( x & y)

ế

ả ề ế ạ

ỗ ị ộ

Bitwise OR ( x | y)

M i v  trí c a bit tr  v  k t qu  là 1 n u bit c a  m t trong hai toán h ng là 1.

ượ

ị ủ

ạ c giá tr  c a toán h ng (1 thành 0 và

Bitwise NOT ( ~ x)

ả Ð o ng ượ ạ c l ng

i).

ế

Bitwise XOR  ( x ^ y)

ỉ ả ề ế ỗ ị M i v  trí c a bit ch  tr  v  k t qu  là 1 n u bit  ạ ộ ủ c a m t trong hai toán h ng là 1 mà không không  ả ả ph i c  hai toán h ng cùng là 1.

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 11 of 25

ử ậ ử ậ

Toán t Toán t

ị ị  lu n lý nh  phân (tt.)  lu n lý nh  phân (tt.)

Ví dụ

• 10 & 15 1010 & 11111010  10

• 10 | 15 1010 | 11111111  15

• 10 ^ 15 1010 ^ 11110101  5

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 12 of 25

ể ổ ể ể ổ ể

Chuy n đ i ki u  Chuy n đ i ki u

ướ

đ ng trình bày d

ị i đây nh m xác đ nh giá tr

ượ

ế

c chuy n thành int và float đ ạ

a. b.

ể c chuy n thành double. ạ ẽ ượ i s  đ

ể c chuy n thành

ế

ế

c.

ạ ẽ ượ i s  đ

c chuy n thành long,

ế

ế

d.

ạ ẽ ượ i s  đ

ể c chuy n thành

ế

ế ấ ả

ế

ể ổ ể ự ộ ắ Qui t c chuy n đ i ki u t ứ bi u th c: ượ ể  char và short đ  N u có m t toán h ng là double,  toán h ng còn l double, và k t qu  là double. ộ  N u có m t toán h ng là long,  toán h ng còn l ả và k t qu  là long.  ạ ộ  N u có m t toán h ng là unsigned,  toán h ng  còn l ả unsigned và k t qu  cũng là unsigned. ạ  N u t

t c  toán h ng ki u int, k t qu  là int.

e.

Ví  dụ

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 13 of 25

Ép ki uể Ép ki uể

ấ ị

ể c ép thành m t ki u nh t đ nh b ng

ứ ượ ậ ỹ

ộ ể cast).

ể M t bi u th c đ cách dùng k  thu t ép ki u ( Cú pháp :

(ki u d  li u) cast

ể ữ ệ ấ ứ ể ữ ệ

ợ ệ

Ki u ể  B t c  ki u d  li u h p l

trong C

Ví dụ:

ị ố

float x,f;

f = 3.14159;

ượ ượ ị ủ

ả ề ở Giá tr  s  nguyên tr  v  b i (int) f  ố ự ể c chuy n thành s  th c khi nó  đ ử ử c toán t đ  GÁN x  lý. Song, giá  ổ ẫ tr  c a f  v n không đ i.

x = (int) f;

Giá trị của x sẽ là 3 (số nguyên)

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 14 of 25

ộ ư ộ ư

ủ ủ

ử ử

Đ   u tiên c a toán t Đ   u tiên c a toán t

ấ ủ

 Đ   u tiên t o nên c u trúc phân c p c a lo i toán t ứ

ộ ư ớ

ị ộ

ử  khác khi tính giá tr  m t bi u th c

ề ậ

th c thi các toán t

ượ

ộ ư

trong C ổ ở c thay đ i b i các

ặ ơ

ế ợ

ử Toán tử

ạ ộ

ả ế

này so v i lo i toán t ố ọ s  h c Nó đ  c p đ n th  t ứ ự ự ế Đ   u tiên c a các toán t ử ủ  này đ ứ ấ d u ngo c đ n trong bi u th c Lo i toán t M t ngôi

­    ++    ­­

Hai ngôi

^

Hai ngôi

*    /    %

Hai ngôi

+ ­

Tính k t h p Ph i đ n trái ả ế Trái đ n ph i ả ế Trái đ n ph i ả ế Trái đ n ph i

ả ế

Hai ngôi

=

Ph i đ n trái

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 15 of 25

ộ ư ộ ư

ủ ủ

ử ử

Đ   u tiên c a toán t Đ   u tiên c a toán t

(tt.)  (tt.)

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 16 of 25

ộ ư ộ ư

ủ ủ

ử ử

Đ   u tiên c a toán t Đ   u tiên c a toán t

so sánh  so sánh

ộ ư

ủ ượ

ử  so sánh (quan h )  Đ   u tiên c a toán t ả ừ  trái sang ph i c tính t

luôn đ

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 17 of 25

ộ ư ộ ư

ủ ủ

ử ậ ử ậ

Đ   u tiên c a toán t Đ   u tiên c a toán t

lu n lý  lu n lý

ứ ự ư

Th  t

u tiên 1 2 3

Toán tử NOT AND OR

ử ậ

lu n lý trong m t

ộ ừ

ề ả

Khi có nhi u toán t ụ ệ đi u ki n, ta áp d ng quy t c tính t ph i sang trái

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 18 of 25

ộ ư ộ ư

ủ ủ

ử ậ ử ậ

lu n lý   lu n lý

Đ   u tiên c a toán t Đ   u tiên c a toán t (tt.) (tt.)

Xét bi u th c sau:

ư

ượ

ệ Ði u ki n này đ

ộ ư

NOT có đ   u tiên cao nh t.

ấ ừ ả

ượ

ph i sang trái.

False OR True AND NOT False AND True ề c tính nh  sau: False OR True AND [NOT False] AND True ấ False OR True AND [True AND True] ộ ư  đây, AND có đ   u tiên cao nh t, nh ng toán t ư có cùng  u tiên đ c tính t False OR [True AND True]  [False OR True]

True

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 19 of 25

ộ ư ộ ư

ử ử

ữ ữ Đ   u tiên gi a các toán t Đ   u tiên gi a các toán t

ạ ề ả ượ

ộ ư

ể Khi m t bi u th c có nhi u lo i toán t  gi a chúng ph i đ đ   u tiên

ử  thì  ế ậ t l p.

c thi

ứ ự ư

Th  t

(Logical)

u tiên 1 2 3

ử ể Ki u toán t ố ọ (Arithmetic) S  h c  So sánh (Comparison) ậ Lu n lý

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 20 of 25

ộ ư ộ ư

ử ử

ữ ữ Đ   u tiên gi a các toán t Đ   u tiên gi a các toán t

(tt.)  (tt.)

Ví d  :ụ

2*3+4/2 > 3 AND 3<5 OR 10<9

ư

Vi c tính toán nh  sau :

ướ

Toán t

c

[2*3+4/2] > 3 AND 3<5 OR 10<9 ử ố ọ ẽ ượ  s  h c s  đ c tính tr [[2*3]+[4/2]] > 3 AND 3<5 OR 10<9 [6+2] >3 AND 3<5 OR 10<9 [8 >3] AND [3<5] OR [10<9]

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 21 of 25

ộ ư ộ ư

ử ử

ữ ữ Đ   u tiên gi a các toán t Đ   u tiên gi a các toán t

(tt.)  (tt.)

ộ ư

so sánh có cùng đ   u tiên. Ta áp

ế ế K  đ n là toán t ụ d ng quy t c tính t

trái sang ph i. True AND True OR False

ử ể

ộ ư

ki u lu n lý. AND s  có đ   u

Cu i cùng là toán t ơ tiên cao h n OR

[True AND True] OR False True OR False True

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 22 of 25

ổ ộ ư ổ ộ ư Thay đ i đ   u tiên Thay đ i đ   u tiên

ể ượ

ộ ư ử

có th  đ

ộ ư

Toán t

D u ngo c đ n ( ) có đ   u tiên cao nh t ấ ặ ơ ấ Đ   u tiên c a các toán t ủ ộ ư c thay đ i  ặ ơ ở ấ b i d u ngo c đ n ử  có đ   u tiên th p h n n u đ t trong

ơ ướ c th c thi tr

ấ d u ngo c đ n s  đ

ặ ơ ẽ ượ ự ặ ơ ồ ặ ngo c đ n trong cùng nh t s  đ

c th c thi tr

ề ặ

ế c Khi các c p ngo c đ n l ng nhau  ( ( ( ) ) ), c p ặ ướ ự ấ ẽ ượ ặ ơ c N u trong bi u th c có nhi u c p ngo c đ n thì  ế ặ ơ ự  t

ứ ứ ự ừ vi c th c thi s  theo th  t

trái sang ph i

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 23 of 25

ổ ộ ư ổ ộ ư

Thay đ i đ   u tiên (tt.) Thay đ i đ   u tiên (tt.)

Ví d  :ụ

5+9*3^2­4 > 10 AND (2+2^4­8/4 > 6 OR (2<6 AND 10>11))

Cách tính :

1)  5+9*3^2­4 > 10 AND (2+2^4­8/4 > 6 OR (True AND False))

ẽ ượ

ướ

D u ngo c đ n bên trong s  đ

c tính tr

ặ ơ c  2)  5+9*3^2­4 > 10 AND (2+2^4­8/4 > 6 OR False)

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 24 of 25

ổ ộ ư ổ ộ ư

Thay đ i đ   u tiên (tt.) Thay đ i đ   u tiên (tt.)

3)  5+9*3^2­4 >10 AND (2+16­8/4 > 6 OR False)

ế ế

ặ ơ ở

ượ

K  đ n d u ngo c đ n

ế   c tính đ n  ngoài đ   5+9*3^2­4 > 10 AND (2+16­2 > 6 OR False)

ấ 4)

5)

5+9*3^2­4 > 10 AND (18­2 > 6 OR False)

6)  5+9*3^2­4 > 10 AND (16 > 6 OR False)

7)  5+9*3^2­4 > 10 AND (True OR False)

8)  5+9*3^2­4 > 10 AND True

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 25 of 25

ổ ộ ư ổ ộ ư

Thay đ i đ   u tiên (tt.) Thay đ i đ   u tiên (tt.)

9) 5+9*9­4>10 AND True

ượ

Bi u th c bên trái đ

c tính tr

ướ c 10) 5+81­4>10 AND True

11)  86­4>10 AND True

12)  82>10 AND True

13) True AND True

14) True

ơ ả ậ ươ L p trình c  b n C/Ch ng 3/ 26 of 25