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;
}
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.