2017-04-05 2 views
-21

Java가 50인데도 C++이 동일한 코드 개념에 대해 51을 출력하는 이유는 무엇입니까?java vs C++ 사전 및 증분 증가

int i=5; 

i= (++i + ++i + ++i + ++i + ++i + i++); 

print i 

자바 : 50

C++ 다음 lauguages ​​다르게 지정되어 있기 때문에 51

+7

이것은 유효하지 않은 C++입니다. –

+0

이 문장의 진정한 목적은'(++ i ++ ++ i ++ ++ i ++ ++ i + i ++); –

+0

유사/듀피 [여기] (http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior) – WhiZTiM

답변

7

결과는 다릅니다.

평가 순서는 자바 있도록 정의되기 때문에 자바는 50

을 말한다 이유. 덧셈은 6 + 7 + 8 + 9 + 10 + 10 == 50입니다. 마지막 게시물 증분은 할당에 의해 덮어 쓰여지며 아무 효과가 없습니다.

C++은 그것이 출력을 할 수 있도록 도시 된 프로그램은 C++로 동작 보증되지 51

말한다있다. 이 경우 51이되었습니다. 이 대답에 대한 자세한 내용 : https://stackoverflow.com/a/4176333/2079303