web-dev-qa-db-fra.com

La sortie de cout << 1 && 0;

Je ne comprends pas pourquoi le code ci-dessous s'imprime 1.

1 && 0 n'est pas la même chose que true && false -> false?

Pourquoi cette impression n'est-elle pas 0?

#include <iostream>

using namespace std;

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

Il s'agit de Priorité de l'opérateur .

L'opérateur de décalage gauche au niveau de la surcharge operator<<(std::basic_ostream) a une priorité plus élevée que l'opérateur logique ET &&.

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

Si vous n'êtes pas sûr à 146% de la priorité d'un opérateur, n'hésitez pas à utiliser des parenthèses. La plupart des IDE modernes vous diront si vous n'avez pas besoin de les utiliser.

44
Smit Ycyken