ử ử
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 & 11111010 10
• 10 | 15 1010 | 11111111 15
• 10 ^ 15 1010 ^ 11110101 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^24 > 10 AND (2+2^48/4 > 6 OR (2<6 AND 10>11))
Cách tính :
1) 5+9*3^24 > 10 AND (2+2^48/4 > 6 OR (True AND False))
ấ
ẽ ượ
ướ
D u ngo c đ n bên trong s đ
c tính tr
ặ ơ c 2) 5+9*3^24 > 10 AND (2+2^48/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^24 >10 AND (2+168/4 > 6 OR False)
ế ế
ặ ơ ở
ượ
K đ n d u ngo c đ n
ế c tính đ n ngoài đ 5+9*3^24 > 10 AND (2+162 > 6 OR False)
ấ 4)
5)
5+9*3^24 > 10 AND (182 > 6 OR False)
6) 5+9*3^24 > 10 AND (16 > 6 OR False)
7) 5+9*3^24 > 10 AND (True OR False)
8) 5+9*3^24 > 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*94>10 AND True
ứ
ể
ượ
Bi u th c bên trái đ
c tính tr
ướ c 10) 5+814>10 AND True
11) 864>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