Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Khác biệt giữa toán tử AND bitwise (&) và logic (&&) trong C/C++


Bitwise AND: &. Logical AND: &&. Các khác biệt cơ bản:

  • Toán hạng & kiểu trả về: && làm việc trên biểu thức logic, trả về boolean (0/1). & làm việc trên số nguyên (int, short, long, unsigned), trả về cùng kiểu số nguyên.

Ví dụ

#include <iostream>
using namespace std;

int main() {
    int x = 3;  // 0011
    int y = 7;  // 0111
    if (y > 1 && y > x)
        cout << "y lon hon 1 VA x\n";
    int z = x & y;  // 0011 & 0111 = 0011 = 3
    cout << "z = " << z;
}

Kết quả

y lon hon 1 VA x
z = 3
  • Short-circuit evaluation: && không đánh giá toán hạng 2 nếu toán hạng 1 là false. || không đánh giá toán hạng 2 nếu toán hạng 1 là true. Nhưng & và | luôn đánh giá cả hai toán hạng.

Ví dụ

#include <iostream>
using namespace std;

int main() {
    int x = 0;
    cout << (x && printf("Test && ")) << endl;  // printf KHÔNG chạy
    cout << (x & printf("Test & "));            // printf CÓ chạy
}

Kết quả

0
Test & 0