Toán tử logic
C++ có 3 toán tử logic cơ bản để kết hợp các điều kiện.
Bảng toán tử
Phần tiêu đề “Bảng toán tử”| Toán tử | Ý nghĩa |
|---|---|
&& |
AND (và) |
|| |
OR (hoặc) |
! |
NOT (phủ định) |
#include <iostream>
int main() { bool a = true, b = false;
std::cout << (a && b) << std::endl; // 0 (false) std::cout << (a || b) << std::endl; // 1 (true) std::cout << (!a) << std::endl; // 0 (false)
int age = 20; bool has_id = true; if (age >= 18 && has_id) { std::cout << "Duoc phep vao" << std::endl; }
return 0;}⚠️ Lỗi thường gặp: dùng nhầm & (bitwise AND) hoặc | (bitwise OR) thay vì &&/||. Chúng hoạt động ở mức bit, cho kết quả khác hoàn toàn:
int a = 5, b = 3;std::cout << (a & b) << std::endl; // 1 (bitwise AND trên các bit: 101 & 011 = 001)std::cout << (a && b) << std::endl; // 1 (logical AND: cả hai khác 0 → true)Short-circuit evaluation (đánh giá ngắn mạch)
Phần tiêu đề “Short-circuit evaluation (đánh giá ngắn mạch)”C++ dừng đánh giá biểu thức logic ngay khi kết quả đã được xác định, không cần đánh giá toàn bộ:
#include <iostream>
bool expensive_check() { std::cout << "Dang kiem tra..." << std::endl; return true;}
int main() { bool a = false; if (a && expensive_check()) { // expensive_check() KHÔNG được gọi vì a đã là false std::cout << "Vao day" << std::endl; }
return 0;}Đây là kỹ thuật thường dùng để tránh lỗi, ví dụ kiểm tra con trỏ null trước khi truy cập (sẽ học ở phần con trỏ):
int* ptr = nullptr;if (ptr != nullptr && *ptr > 0) { // Nếu ptr là null, *ptr sẽ KHÔNG được thực thi std::cout << "An toan" << std::endl;}Kết hợp nhiều điều kiện
Phần tiêu đề “Kết hợp nhiều điều kiện”int score = 85;bool is_pass = (score >= 50 && score < 70) || score >= 90;std::cout << is_pass << std::endl; // 0 (false)Tổng kết
Phần tiêu đề “Tổng kết”- C++ dùng
&&,||,!cho các phép toán logic - Cẩn thận không nhầm lẫn
&&/||(logic) với&/|(bitwise) - đây là lỗi rất phổ biến - Short-circuit evaluation giúp tránh đánh giá những biểu thức không cần thiết, thường dùng để bảo vệ khỏi lỗi truy cập con trỏ null