“Ngôn ng lp trình C và C++” Nguyn Trng Giang 1 Chng 4: Biu thc S kt hp các phép toán và các toán hng đ din đt mt công thc toán hc to ra biu thc. 4.1. Khai báo bin Cú pháp Gii thích T x; T: kiu d liu x: bin 4.2. Phép gán (=) Cú pháp Gii thích bt1 = bt2; bt1: Biu thc đc gán giá tr bt2: Biu thc đem gán − Ví d: i = i+2; x = x*(a+2); x = y = 2; c = (x=2)*(y=5); − Có th kt hp phép gán vi phép toán khác (+ - * / % << >> & | ^). Ví d: i += 2; x *= a+2; 4.3. Phép toán hai toán hng a) Phép toán s hc: ( + - * / % ) − /: phép chia. Chú ý: phép chia 2 s nguyên s b phn thp phân. (VD: 5/3 = 1) − %: phép ly phn d (Ví d: 11%3 = 2) b) Phép toán Logic: ( && || ) − Kt qu ca phép toán là giá tr logic (0 hoc 1 – tng quát là khác 0) − &&: Nhân logic − ||: Cng logic “Ngôn ng lp trình C và C++” Nguyn Trng Giang 2 − Bng chân lý: a b a && b a || b khác 0 khác 0 khác 0 khác 0 khác 0 0 0 khác 0 0 khác 0 0 khác 0 0 0 0 0 c) Phép so sánh: ( > < >= <= == != ) − Kt qu ca các phép so sánh là giá tr logic (0 hoc 1) − Có 2 ký hiu khác vi Pascal: == (so sánh xem hai biu thc có bng nhau hay không) != (so sánh xem hai biu thc có khác nhau hay không) − Chú ý: S nhm ln gia phép gán (=) và phép so sánh (==) có th dn ti nhng li rt khó phát hin trong chng trình! d) Thao tác bit: ( << >> & | ^ ) − << và >> o Dch trái n bit: <<n o Dch phi m bit: >>m o Ví d: a=0x08 î a<<3=0x40 còn a>>3=0x01) o Quy tc: a<<n = a*2 n và a>>n = a*2 -n − & Nhân logic (phép AND theo tng bit) Ví d: a=0x08; b=0x1A; a&b=0x08 − | Cng logic (phép OR theo tng bit) Ví d: a=0x08; b=0x1A; a|b=0x1A − ^ Tuyn loi tr (phép XOR theo tng bit) Ví d: a=0x08; b=0x1A; a^b=0x12 − Bng chân lý: a b a & b a | b a ^ b 11 1 1 0 10 0 1 1 01 0 1 1 00 0 0 0 “Ngôn ng lp trình C và C++” Nguyn Trng Giang 3 − ng dng: to mt n bit (bit mask). Ví d: theo dõi bit s 3 ca bin flag, dùng mt n mask = 0x08. Sau đó tính (flag & mask) e) Toán t điu kin: ?: Cú pháp Gii thích (dk)?bt1:bt2 dk: biu thc điu kin bt1: là biu thc đc tr v nu dk là ÚNG bt2: là biu thc đc tr v nu dk là SAI f) Toán t phm vi: ( :: ) − Dùng đ truy xut mt phn t b che bi phm vi hin thi hoc phân bit các thành phn trùng tên nhau ca các lp c s khác nhau. 4.4. Phép toán mt toán hng − Du âm - − Phép tng ++: ++x (tng trc, ly giá tr sau) x++ (ly giá tr trc, tng sau) − Phép gim : x (gim trc, ly giá tr sau) x (ly giá tr trc, gim sau) − Ph đnh ! Ví d: a khác 0 î !a = 0 còn nu a = 0 î !a = 1 − Phn bù theo bit ~ Ví d: a=0x08 î ~a=0xF7 − Chuyn kiu: o Cú pháp: (T)bt Trong đó: T – kiu d liu, bt: biu thc o C++ cho phép: T(bt) o Chú ý: Bn thân kiu ca biu thc không thay đi. − Ly đa ch & − Ly ni dung * − sizeof: Xác đnh đ ln (theo byte) ca mt kiu d liu hoc mt bin sizeof(T) vi T là kiu d liu Ví d: sizeof(int) sizeof(x) vi x là bin Ví d: int i; sizeof(i) “Ngôn ng lp trình C và C++” Nguyn Trng Giang 4 4.5. Mc đ u tiên ca các phép toán Mc u tiên Phép toán Th t thc hin 1 :: (trong C++) 2 () [] -> . Trái sang phi 3 ! ~ ++ - (T) * & sizeof Phi sang trái 4 * / % Trái sang phi 5 + - Trái sang phi 6 << >> Trái sang phi 7 < <= > >= Trái sang phi 8 == != Trái sang phi 9 & Trái sang phi 10 | Trái sang phi 11 ^ Trái sang phi 12 && Trái sang phi 13 || Trái sang phi 14 ?: Phi sang trái 15 = += -= *= /= %= >>= <<= &= |= ^= Phi sang trái 16 , . Ngôn ng lp trình C và C++” Nguyn Trng Giang 1 Chng 4: Biu thc S kt hp các phép toán. tr logic (0 hoc 1 – tng quát là khác 0) − &&: Nhân logic − ||: Cng logic Ngôn ng lp trình C và C++” Nguyn Trng Giang 2 − Bng chân lý: a b a && b a || b khác. a^b=0x12 − Bng chân lý: a b a & b a | b a ^ b 11 1 1 0 10 0 1 1 01 0 1 1 00 0 0 0 Ngôn ng lp trình C và C++” Nguyn Trng Giang 3 − ng dng: to mt n bit (bit mask). Ví d: