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ĩaVí dụ
==Bằng nhau5 == 5 → true
!=Khác nhau5 != 3 → true
>Lớn hơn5 > 3 → true
<Nhỏ hơn5 < 3 → false
>=Lớn hơn hoặc bằng5 >= 5 → true
<=Nhỏ hơn hoặc bằng5 <= 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;
}
#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)