한 선생님은 이렇게 말씀하셨습니다.
<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
"--c"가 "c--""로 변경되면 c의 값도 0입니다. 값이 4로 변경되는 이유는 무엇인가요?
선생님들이 답변해주셨으면 좋겠습니다. 감사합니다!
一切近乎完美2018-03-28 15:24:52
--c가 먼저 계산된 다음 c에 할당됩니다. 즉, 먼저 죽이고 나중에 보고하면 황제는 아직 모르고 아직 죽지 않았다고 생각하므로 여전히 c가 원본입니다. 자신이 이미 죽었다는 사실을 안다고 보고한 후에야 이때 c는 1씩 줄어든다.
그리고 c--는 c에 뺄셈을 한 뒤 할당됩니다. 당시 c는 1이 적었는데, 이는 황제가 직접 처형을 감독했다는 의미입니다.
For --c
a < b true
--c c는 먼저 감소합니다. c=0 false(0은 false, non-0은 true)
a<b&&--c false 다음 &&가 트리거됩니다. "Short "회로"는 ++a
all c=0, a=3
를 실행하지 않습니다. for c--
a < b true
c-- c는 먼저 참과 거짓을 결정한 다음 자체적으로 감소합니다. c=1 모든 판단이 true이면 c가 감소합니다.
a<b&&--c True는 &&의 "단락 회로"를 트리거하지 않습니다. 실행하고 판단합니다. ++a
그래서 c=0, a=4
一生何求2018-03-26 21:13:25
--C++일 때 표현식의 왼쪽은 false이고, 오른쪽의 ++a는 연산을 수행하지 않으므로 a의 값은 여전히 3입니다.
C++일 때 표현식의 왼쪽이 true이고, 따라서 오른쪽의 ++a는 여전히 연산을 수행해야 하므로 a의 값은 4
가 됩니다.正歌2018-03-26 19:48:14
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
if ( a < b && c-- && ++a);/ /이때 c의 값도 0이므로 역시 false여야 합니다. ++a는 계산하면 안 되므로 a의 값은 여전히 3이어야 합니다. 왜 계산하나요?
{
window.alert("확인")
}
window.alert(c) // c = 0
window.alert(a) // a =3