Các toán tử số học
C++ hỗ trợ đầy đủ các toán tử số học cơ bản để tính toán trên số nguyên và số thực.
Bảng toán tử số học
Phần tiêu đề “Bảng toán tử số học”| Toán tử | Ý nghĩa | Ví dụ |
|---|---|---|
+ |
Cộng | 5 + 3 → 8 |
- |
Trừ | 5 - 3 → 2 |
* |
Nhân | 5 * 3 → 15 |
/ |
Chia | 5 / 3 → 1 (số nguyên!) |
% |
Chia lấy dư (modulo) | 5 % 3 → 2 |
++ |
Tăng 1 đơn vị | a++ hoặc ++a |
-- |
Giảm 1 đơn vị | a-- hoặc --a |
Lưu ý: C++ không có toán tử lũy thừa. Muốn tính lũy thừa, dùng hàm pow() từ thư viện <cmath> (xem bài tiếp theo).
#include <iostream>
int main() { int a = 10; int b = 3;
std::cout << "a + b = " << (a + b) << std::endl; // 13 std::cout << "a - b = " << (a - b) << std::endl; // 7 std::cout << "a * b = " << (a * b) << std::endl; // 30 std::cout << "a / b = " << (a / b) << std::endl; // 3 (chia nguyên!) std::cout << "a % b = " << (a % b) << std::endl; // 1
return 0;}Phép chia số nguyên: cạm bẫy cần nhớ
Phần tiêu đề “Phép chia số nguyên: cạm bẫy cần nhớ”Đây là điểm rất dễ gây lỗi với người mới học C++: khi cả hai toán hạng của / đều là số nguyên (int), kết quả sẽ luôn là số nguyên - phần thập phân bị cắt bỏ hoàn toàn, không được làm tròn:
int x = 7;int y = 2;std::cout << x / y << std::endl; // 3 (KHÔNG phải 3.5!)
double result = x / y;std::cout << result << std::endl; // Vẫn là 3! Vì phép chia diễn ra TRƯỚC khi gán
// Cách đúng: ép kiểu một trong hai toán hạng sang double trước khi chiadouble correct = (double)x / y;std::cout << correct << std::endl; // 3.5Toán tử tăng/giảm: tiền tố vs hậu tố
Phần tiêu đề “Toán tử tăng/giảm: tiền tố vs hậu tố”C++ (kế thừa từ C) có hai dạng ++/--, khác nhau về thời điểm giá trị được trả về:
int a = 5;std::cout << a++ << std::endl; // In ra 5, SAU ĐÓ mới tăng a lên 6 (hậu tố - postfix)std::cout << a << std::endl; // 6
int b = 5;std::cout << ++b << std::endl; // Tăng b lên 6 TRƯỚC, rồi mới in ra 6 (tiền tố - prefix)std::cout << b << std::endl; // 6Toán tử gán kết hợp (Compound Assignment)
Phần tiêu đề “Toán tử gán kết hợp (Compound Assignment)”C++ hỗ trợ các toán tử gán rút gọn để viết ngắn gọn hơn:
int a = 10;a += 5; // a = a + 5 → 15a -= 3; // a = a - 3 → 12a *= 2; // a = a * 2 → 24a /= 4; // a = a / 4 → 6a %= 4; // a = a % 4 → 2Tổng kết
Phần tiêu đề “Tổng kết”- C++ có đầy đủ
+,-,*,/,%, nhưng không có toán tử lũy thừa (dùngpow()thay thế) - Phép chia
/giữa hai số nguyên luôn cho ra số nguyên, phần thập phân bị cắt bỏ ++/--có hai dạng tiền tố và hậu tố, khác nhau về thời điểm trả về giá trị- Toán tử gán kết hợp (
+=,-=,*=,/=,%=) giúp viết code ngắn gọn hơn