J'ai pensé à quelques erreurs de débutant et je me suis retrouvé avec celui sur l'instruction if
. J'ai développé un peu le code à ceci:
int i = 0;
if (i = 1 && i == 0) {
std::cout << i;
}
J'ai vu que l'instruction if
renvoie vrai, et que cout
est i
comme 1
. Si i
est affecté 1
dans l'instruction if, pourquoi i == 0
return true
?
Cela a à voir avec priorité de l'opérateur .
if (i = 1 && i == 0)
n'est pas
if ((i = 1) && (i == 0))
car &&
et ==
ont tous deux une priorité plus élevée que =
. Ce que ça donne vraiment, c'est
if (i = (1 && (i == 0)))
qui affecte le résultat de 1 && (i == 0)
à i
. Donc, si i
commence à 0
Alors i == 0
Est true
, donc 1 && true
Est true
(ou 1
), Puis i
est défini sur 1
. Puis, puisque 1
Est vrai, vous entrez le bloc if et imprimez la valeur que vous avez attribuée à i
.
En supposant que votre code ressemble à ceci:
#include <iostream>
using namespace std;
int main() {
int i = 0;
if (i = 1 && i == 0) {
cout << i;
}
}
Ensuite ceci:
if (i = 1 && i == 0) {
évalue comme
if (i = (1 && i == 0)) {
et donc i
est défini sur 1
.