해당 문제의 가장 마지막부분 결과도출에서
myvar.a += myvar.b -= myvar.c *= 10;
이부분에서
*= 계산 먼저후 후치계산부터 하는게 아니라
myvar.a += myvar.b 계산 후에 myvar.b -=myvar.c를 계산하는 것이 아닌가요?
c 자료형에서 +- 순으로 알고있는데 혹시 java에서는 다른것인가요?
왜 결과가 20 -90 100이 아니라 -80 -90 100인거죠..?
안녕하세요.
a += b는 a = a + b입니다. 즉 a에 b를 누적하는 것이죠.
같은 원리로
myvar.a += myvar.b -= myvar.c *= 10;
는
myvar.a 에 그 이후의 값을 누적하는 것입니다.
myvar.a += myvar.a + (myvar.b -= myvar.c *= 10);
그런데 그 이후도 같은 원리가 적용되기에
myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c *= 10 ));
myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c = myvar.c *10 ));
이 되어 연산자 우선순위의 개념이 아니라 연산 순서에 의해 가장 뒤에서부터 계산된 결과가 앞쪽 변수에 누적되는 개념으로
처리되어야 합니다.
오늘도 즐거운 하루 되세요.
-
*2017-04-05 10:20:06
안녕하세요.
a += b는 a = a + b입니다. 즉 a에 b를 누적하는 것이죠.
같은 원리로
myvar.a += myvar.b -= myvar.c *= 10;
는
myvar.a 에 그 이후의 값을 누적하는 것입니다.
myvar.a += myvar.a + (myvar.b -= myvar.c *= 10);
그런데 그 이후도 같은 원리가 적용되기에
myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c *= 10 ));
myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c = myvar.c *10 ));
이 되어 연산자 우선순위의 개념이 아니라 연산 순서에 의해 가장 뒤에서부터 계산된 결과가 앞쪽 변수에 누적되는 개념으로
처리되어야 합니다.
오늘도 즐거운 하루 되세요.