2014-01-15 8 views

답변

8

예 : (value++)은 이전 값으로 계산되지만, (value = value + 1)은 새 값으로 계산됩니다.
식 내의 (value = value + 1)의 직접 등가는 (++value)입니다.

어느 쪽도 스레드로부터 안전하지 않습니다. 추가 재미를 들어

, 여기에 두 개 더 동등한 옵션입니다

value += 1; 
value -= -1; 
+2

. 'method (args) .field'와 같이'method (args) .field = object reference를 반환하면 ++ method (args) .field'는 메소드를 한 번 호출하고,'method (args) .field = method (args) .field + 1'은 그것을 두 번 호출합니다. – ajb

+0

이 표현식을 평가 한 후 '값'내에있는 숫자와 표현식 자체의 값을 실제로 구별하는 유일한 대답입니다. 표현식의 값은 다르지만, 어느 한 표현식이 평가 된 후에도 (대상에 부작용이없는 것으로 가정하고 @ajb가 지적한 것처럼) 'value'는 같은 수를 유지합니다. –

0

아니, 내 친구 ++ 값이 값에 해당 = 값 + 1이 새 값 선행 증가 연산자 과 가치를 변화로 ++입니다 메모리에 보관되어있는 이전 값을 변경하십시오. 즉, 포스트가 증가합니다.

2

올바르지 않습니다. 오히려 ++ 값은 value = value + 1과 같습니다.

++ 값은 사전 증가입니다. Value ++는 후행 증가입니다.

'Post'는 변수가 읽힌 후에 증분이 수행 된 후의 것을 의미합니다. 'Pre'는 이전을 의미하므로 변수 값이 먼저 증가 된 다음 표현식에 사용됩니다. 예를 들어

:

'값'간단한 변수 또는 간단한 배열 요소 기준 같이만큼 참
int i, x; 

i = 2; 
x = ++i; 
// now i = 3, x = 3 

i = 2; 
x = i++; 
// now i = 3, x = 2