Bài 5
CÁC TOÁN TỬ
Các toán tử số học
Giảm
Tăng ++
Lấy giá trị dư của phép chia%
Chia /
Nhân*
Trừ-
Cộng+
Ý nghĩaToán tử
Biểu thức
Thứ tự tính toán
trái sang phải+ -
trái sang phải* / %
phải sang trái++ đứng trước
hay dấu + -
trái sang phải++ đứng saucao
nhất
thấp
nhất
ChiềuToán tửƯu tiên
Ví dụ
float val(5.0); cout << val++ – 7.0/2.0;
Theo bảng ta có biểu thức sau cout tương
đương (val++) - (7.0/2.0)
include <iostream>
using namespace std;
int main()
{
int i(2), j(8);
cout << i++ << endl; // Output: ?
cout << i << endl; // Output: ?
cout << j << endl; // Output: ?
cout << j << endl; // Output: ?
return 0;
}
Một số phép gán đặc biệt
ví dụ:
x += y; tương đương x= x+y
x *=y;
x /=y;
i += 3 ; tương đương i = i +3
i *= j + 2 tương đương i = i*(j+2)
Các toán tử quan hệ
Nhỏ hơn <
nhỏ hơn hoặc bằng <=
Lớn hơn >
Lớn hơn hoặc bằng >=
Bằng ==
Không bằng !=
Thứ tự ưu tiên
gán
== !=
< <= > >=
Toán tử số họcCao nhất
Thấp nhất
Toán tửưu tiên
Toán tử luận lý
Phép AND ký hiệu &&
Phép OR ký hiệu II
Phép NOT ký hiệu !
Bit-wise NOT ~, bit-wise AND &, bit-wise OR
I bit-wise XOR ^
&& ưu tiên hơn II, cả hai có ưu tiên cao hơn
toán tử gán nhưng thấp hơn các toán tử đã
nói trên. Toán tử NOT (!) ưu tiên cao hơn.
Một biểu thức luận lý sẽ được đánh giá vế
trái trước, nếu đã đánh giá được thì không
cần phải đánh giá vế phải nữa.
Bài tập 1: Cho biết kết quả
bool res = false; int y = 5;
res = 7 || (y = 0);
cout << "Ket qua của (7 || (y = 0)): " << res
<< endl;
cout << "Gia tri cua y: " << y << endl;
int a, b, c;
a = b = c = 0;
res = ++a || ++b && ++c;
cout << '\n' << " res = " << res << ", a = " << a << ", b = " << b <<
", c = " << c << endl;
a = b = c = 0;
res = ++a && ++b || ++c;
cout << " res = " << res << ", a = " << a << ", b = " << b << ", c =
" << c << endl;
return 0; }
Bài tập 2
Hãy dùng dấu ngoặc để xác định biểu thức
tương đương với
x = –4 * i++ – 6 % 4;
Xác định giá trị biểu thức sau, giả sử x=7
x < 10 && x >= –1
!x && x >= 3
x++ == 8 || x == 7