Le professeur Han a dit :
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
if ( a < b && --c && ++a)
{
window.alert("OK")
}
window.alert(c) // c = 0
window.alert(a) // a =3
que si "--c" est remplacé par "c--"", la valeur de c est également 0. Pourquoi la valeur d'un changement passe-t-elle à 4 ?
J'espère que les enseignants pourront répondre à cette question, merci !
--c est calculé d'abord puis attribué à c, c'est-à-dire tuez d'abord et faites un rapport plus tard. Lorsque vous le tuez, l'empereur ne le sait pas encore et pense qu'il n'est pas encore mort, donc c est toujours le c d'origine. Ce n'est qu'après avoir signalé qu'il sait qu'il est déjà mort, c'est réduit de un à ce moment.
Et c-- est attribué à c après soustraction. À cette époque, c était un de moins, ce qui signifie que l'empereur a personnellement supervisé l'exécution.
Pour --c
a < b true
--c c décrémente d'abord c=0 false (0 est faux, non-0 est vrai)
a<b&&--c false puis && sera déclenché "Court circuit" n'exécute pas ++a
all c=0, a=3
for c--
a < b true
c-- c détermine d'abord vrai et faux puis se décrémente, c=1 car tous les jugements sont vrais Alors c décrémente
a<b&&--c True ne déclenchera pas le "court-circuit" de && Exécuter et juger ++a
Donc c=0, a=4
--En c++, le côté gauche de l'expression est faux, et ++a sur le côté droit n'effectue pas d'opérations, donc la valeur de a est toujours 3
Quand c++, le côté gauche de l'expression est vrai, donc ++a sur le côté droit doit encore effectuer des opérations, donc la valeur de a La valeur devient 4
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
if ( a < b && c-- && ++a);/ /À ce stade, la valeur de c est également 0, ce qui devrait également être faux. ++a ne doit pas être calculé, donc la valeur de a doit toujours être 3. Pourquoi est-elle calculée ?
{
window.alert("OK")
}
window.alert(c) // c = 0
window.alert(a) // a =3