Biểu thức số học (Arithmetic Expression)
Biểu thức số học là sự kết hợp giữa các giá trị, biến và toán tử để tạo ra một giá trị mới.
Thứ tự ưu tiên toán tử
Phần tiêu đề “Thứ tự ưu tiên toán tử”Giống như trong toán học thông thường, C++ tuân theo thứ tự ưu tiên: ngoặc đơn → nhân/chia/chia dư → cộng/trừ, tính từ trái sang phải khi cùng độ ưu tiên.
#include <iostream>
int main() { int result1 = 2 + 3 * 4; // 14 (nhân trước) int result2 = (2 + 3) * 4; // 20 (ngoặc trước) int result3 = 10 - 4 / 2; // 8 (chia trước: 10 - 2) int result4 = (10 - 4) / 2; // 3
std::cout << result1 << " " << result2 << " " << result3 << " " << result4 << std::endl; return 0;}Biểu thức lồng nhau
Phần tiêu đề “Biểu thức lồng nhau”int a = 5, b = 10, c = 2;int result = (a + b) * c - (b / c);// = (15) * 2 - 5 = 30 - 5 = 25std::cout << result << std::endl; // 25Trộn kiểu dữ liệu trong biểu thức
Phần tiêu đề “Trộn kiểu dữ liệu trong biểu thức”Khi một biểu thức có cả int và double, C++ tự động chuyển kiểu int thành double trước khi tính (usual arithmetic conversion), khác với việc chia hai số int (xem bài trước).
int a = 5;double b = 2.0;double result = a + b; // a được chuyển thành 5.0 trước khi cộngstd::cout << result << std::endl; // 7Biểu thức trong điều kiện
Phần tiêu đề “Biểu thức trong điều kiện”Biểu thức số học thường được dùng trực tiếp trong điều kiện rẽ nhánh hoặc vòng lặp:
int age = 20;if (age % 2 == 0) { std::cout << "So chan" << std::endl;}Tổng kết
Phần tiêu đề “Tổng kết”- Thứ tự ưu tiên: ngoặc đơn > nhân/chia/chia dư > cộng/trừ
- Dùng ngoặc
()để làm rõ và kiểm soát thứ tự tính toán, tránh nhầm lẫn - Khi trộn
intvàdoubletrong biểu thức, C++ tự động chuyểnintsangdouble - Luôn để ý biểu thức chia số nguyên có thể gây mất phần thập phân ngoài ý muốn