Toán tử và biểu thức
Toán tử kết hợp các giá trị thành biểu thức. C và C++ dùng chung gần như mọi toán tử, kể cả quy tắc chia số nguyên hay làm người mới bất ngờ.
Toán tử và biểu thức là gì?
Toán tử kết hợp các giá trị thành biểu thức. C và C++ dùng chung gần như mọi toán tử, kể cả quy tắc chia số nguyên hay làm người mới bất ngờ.
Dùng toán tử số học, gán, so sánh và logic trong C và C++.
Điểm quan trọng
- Luôn bật compiler warning và xử lý mọi cảnh báo.
- Hiểu rõ type và lifetime của từng giá trị.
- Kiểm tra input và giới hạn mảng rõ ràng.
Code ví dụ bằng C và C++
#include <stdio.h>
int main(void) {
int a = 17, b = 5;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b); /* integer division drops the fraction */
printf("a %% b = %d\n", a % b); /* remainder */
printf("a / 5.0 = %.1f\n", a / 5.0); /* one double operand gives a double */
int total = 10;
total += 5;
total *= 2;
printf("total = %d\n", total);
int count = 0;
count++;
printf("count = %d\n", count);
/* Comparisons and logical operators give 1 (true) or 0 (false). */
printf("a > b: %d, a == 17: %d\n", a > b, a == 17);
printf("a > 10 && b > 10: %d\n", a > 10 && b > 10);
printf("a > 10 || b > 10: %d\n", a > 10 || b > 10);
return 0;
}
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: 1, a == 17: 1
a > 10 && b > 10: 0
a > 10 || b > 10: 1
#include <iostream>
int main() {
int a = 17, b = 5;
std::cout << "a + b = " << a + b << '\n';
std::cout << "a - b = " << a - b << '\n';
std::cout << "a * b = " << a * b << '\n';
std::cout << "a / b = " << a / b << '\n'; // integer division drops the fraction
std::cout << "a % b = " << a % b << '\n'; // remainder
std::cout << "a / 5.0 = " << a / 5.0 << '\n'; // one double operand gives a double
int total = 10;
total += 5;
total *= 2;
std::cout << "total = " << total << '\n';
int count = 0;
count++;
std::cout << "count = " << count << '\n';
// bool values print as true/false with std::boolalpha.
std::cout << std::boolalpha;
std::cout << "a > b: " << (a > b) << ", a == 17: " << (a == 17) << '\n';
std::cout << "a > 10 && b > 10: " << (a > 10 && b > 10) << '\n';
std::cout << "a > 10 || b > 10: " << (a > 10 || b > 10) << '\n';
}
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: true, a == 17: true
a > 10 && b > 10: false
a > 10 || b > 10: true
So sánh C và C++
Chia hai số int sẽ bỏ phần thập phân, nên 17 / 5 bằng 3; hãy cho một toán hạng là double để giữ lại. Phép so sánh và && / || cho 1 hoặc 0 trong C và true hoặc false trong C++, được std::boolalpha in thành chữ.
C dùng API thủ tục nhỏ gọn và thể hiện chi tiết biểu diễn rõ ràng.
C++ giữ mô hình low-level nhưng bổ sung type thư viện và abstraction an toàn hơn.
Bài tập mở rộng
Chạy cả hai phiên bản rồi thay đổi để quan sát khác biệt về bảo đảm của từng ngôn ngữ.
- Thêm input sai và boundary value.
- Biên dịch với -Wall -Wextra -Wpedantic.
- Tách declaration dùng lại vào header và implementation file.
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Celsius to Fahrenheit Convert a temperature from Celsius to Fahrenheit. Dễ
- Lãi Suất Đơn Giản Tính tổng số tiền sau khi áp dụng lãi suất đơn giản. Dễ