84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
한 선생님은 이렇게 말씀하셨습니다.
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로 변경되는 이유는 무엇인가요?
선생님들이 답변해주셨으면 좋겠습니다. 감사합니다!
--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
all c=0, a=3
를 실행하지 않습니다. for c--
c-- c는 먼저 참과 거짓을 결정한 다음 자체적으로 감소합니다. c=1 모든 판단이 true이면 c가 감소합니다.
그래서 c=0, a=4
--C++일 때 표현식의 왼쪽은 false이고, 오른쪽의 ++a는 연산을 수행하지 않으므로 a의 값은 여전히 3입니다.
C++일 때 표현식의 왼쪽이 true이고, 따라서 오른쪽의 ++a는 여전히 연산을 수행해야 하므로 a의 값은 4
if ( a < b && c-- && ++a);/ /이때 c의 값도 0이므로 역시 false여야 합니다. ++a는 계산하면 안 되므로 a의 값은 여전히 3이어야 합니다. 왜 계산하나요?
window.alert("확인")
--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
all c=0, a=3
를 실행하지 않습니다. for c--
a < b true
c-- c는 먼저 참과 거짓을 결정한 다음 자체적으로 감소합니다. c=1 모든 판단이 true이면 c가 감소합니다.
a
그래서 c=0, a=4
--C++일 때 표현식의 왼쪽은 false이고, 오른쪽의 ++a는 연산을 수행하지 않으므로 a의 값은 여전히 3입니다.
C++일 때 표현식의 왼쪽이 true이고, 따라서 오른쪽의 ++a는 여전히 연산을 수행해야 하므로 a의 값은 4
가 됩니다.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