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

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).

Toán tử Ý nghĩa Ví dụ
== Bằng nhau 5 == 5true
!= Khác nhau 5 != 3true
> Lớn hơn 5 > 3true
< Nhỏ hơn 5 < 3false
>= Lớn hơn hoặc bằng 5 >= 5true
<= Nhỏ hơn hoặc bằng 5 <= 3false
#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;
}
#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;
}

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.

  • 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ếp a < x < b
  • So sánh chuỗi (std::string) theo thứ tự từ điển (lexicographic)