Bỏ qua để đến nội dung

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.

Toán tử Ý nghĩa Ví dụ
+ Cộng 5 + 38
- Trừ 5 - 32
* Nhân 5 * 315
/ Chia 5 / 31 (số nguyên!)
% Chia lấy dư (modulo) 5 % 32
++ 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;
}

Đâ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 chia
double correct = (double)x / y;
std::cout << correct << std::endl; // 3.5

Toá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; // 6

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 → 15
a -= 3; // a = a - 3 → 12
a *= 2; // a = a * 2 → 24
a /= 4; // a = a / 4 → 6
a %= 4; // a = a % 4 → 2
  • C++ có đầy đủ +, -, *, /, %, nhưng không có toán tử lũy thừa (dùng pow() 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