C++: de Multiples conditions de sortie de boucle (plusieurs variables): ET -de ou de OU -ed?
Pour les boucles et de multiples variables et de conditions.
Je suis en utilisant une boucle for pour définir la source et la destination des indices de copier les éléments dans un tableau.
for(int src = 0, dst = 8;
src < 8, dst >= 0;
src ++, dst --)
{
arr2[dst] = arr1[src];
}
Quelque chose comme ça de toute façon.
(ET), | | ( | | )
Ma question porte sur les conditions de sortie. Il y a deux ici. src < 8
et dst >= 0
. Sont ces conditions ET ed (&&
) ou OU-ed (||
).
Pour expliquer plus en détail, sont les conditions évaluées comme ceci:
(src < 8) && (dst >= 0)
Ou sont-ils évalués comme ça?
(src < 8) || (dst >= 0)
Ou est-ce autre chose de totalement différent? J'imagine que la chose logique à faire est d'évaluer l'une des deux façons que j'ai précisé ci-dessus, et pas autre chose.
OriginalL'auteur user3728501 | 2013-08-05
Vous devez vous connecter pour publier un commentaire.
L'opérateur virgule sera de retour la valeur de l'expression juste, donc, de cette écriture:
Comme condition sera le même que le simple fait d'écrire
dst >= 0
. Lesrc < 8
sera complètement ignoré dans ce cas, comme c'est évaluée séparément de la deuxième condition, puis la deuxième condition est retourné. Ce n'est pas evalute ET ou à OU à, mais en fait seulement a pour effet de "jeter" le premier contrôle entièrement.Si vous voulez évaluer cet correctement, vous devez utiliser l'une de vos deux options (préciser explicitement le comportement via
||
ou&&
).Pour plus de détails, voir Opérateur Virgule:
Aaaand je viens d'apprendre quelque chose de nouveau aujourd'hui aswell! 😀 merci
OriginalL'auteur Reed Copsey
L'opérateur virgule évalue la première expression et ignore le résultat. Ensuite, elle évalue la deuxième et c'est ce qui est la valeur testée dans le si. Vous trouverez que votre état n'est pas && et||, mais se comporte exactement comme si(dst >= 0). Parfois, la forme est utile pour modifier une valeur à la fin d'une boucle avant que le test est effectué.
OriginalL'auteur David Elliman