Toán tử quan hệ so sánh
C++ dùng các toán tử quan hệ để so sánh hai giá trị, trả về kết quả kiểu bool (true hoặc false).
Bảng toán tử
Phần tiêu đề “Bảng toán tử”| Toán tử | Ý nghĩa | Ví dụ |
|---|---|---|
== |
Bằng nhau | 5 == 5 → true |
!= |
Khác nhau | 5 != 3 → true |
> |
Lớn hơn | 5 > 3 → true |
< |
Nhỏ hơn | 5 < 3 → false |
>= |
Lớn hơn hoặc bằng | 5 >= 5 → true |
<= |
Nhỏ hơn hoặc bằng | 5 <= 3 → false |
#include <iostream>
int main() { int a = 5, b = 3;
std::cout << (a == b) << std::endl; // 0 (false) std::cout << (a != b) << std::endl; // 1 (true) std::cout << (a > b) << std::endl; // 1 std::cout << (a < b) << std::endl; // 0 std::cout << (a >= 5) << std::endl; // 1 std::cout << (a <= 3) << std::endl; // 0
return 0;}So sánh chuỗi
Phần tiêu đề “So sánh chuỗi”#include <string>#include <iostream>
int main() { std::string a = "apple"; std::string b = "banana";
std::cout << (a == b) << std::endl; // 0 std::cout << (a < b) << std::endl; // 1 (so sánh theo alphabet - "a" < "b")
return 0;}Cẩn thận với việc so sánh liên tiếp
Phần tiêu đề “Cẩn thận với việc so sánh liên tiếp”Viết 1 < x < 10 trong C++ không kiểm tra x có nằm trong khoảng (1, 10) hay không, dù vẫn biên dịch được:
int x = 15;
// SAI VỀ MẶT LOGIC (nhưng vẫn biên dịch được!)if (1 < x < 10) { // Biểu thức được tính là: (1 < x) < 10 → true < 10 → 1 < 10 → true (LUÔN ĐÚNG!)}
// CÁCH ĐÚNG:if (x > 1 && x < 10) { std::cout << "x nam trong khoang (1, 10)" << std::endl;}1 < x được tính trước, cho ra một giá trị bool (true/false), sau đó giá trị bool này lại được so sánh với 10 - dẫn đến kết quả luôn đúng một cách vô tình. Luôn dùng toán tử logic && để kết hợp hai điều kiện so sánh.
Tổng kết
Phần tiêu đề “Tổng kết”- Các toán tử so sánh cơ bản:
==,!=,>,<,>=,<= - Muốn kiểm tra một giá trị nằm trong khoảng, phải viết
a < x && x < b- không thể viết liên tiếpa < x < b - So sánh chuỗi (
std::string) theo thứ tự từ điển (lexicographic)