Выход cout << 1 && 0;

Я не понимаю, почему приведенный ниже код печатает 1.

1 && 0 не совпадает с true && falsefalse?

Почему это не печатает 0?

#include <iostream>

using namespace std;

int main(){
    cout << 1 && 0;
    return 0;
}

Ответ 1

Это все о приоритете оператора.

Оператор operator<<(std::basic_ostream) побитового левого сдвига operator<<(std::basic_ostream) имеет более высокий приоритет, чем Логический И Оператор &&.

#include <iostream>
int main() {
    std::cout << (1 && 0);
    return 0;
}

Если вы не 146% уверены в приоритете оператора, не стесняйтесь использовать скобки. Большинство современных IDE скажут вам, не нужно ли их использовать.