저는이 두 값이 같을 것이라고 (3에서 4로) 이해합니다. 그러나 컴퓨터는이 둘을 동일한 것으로 보며 둘 다 표현으로 간주됩니까?"value"는 임의의 정수라고 가정하십시오. value ++는 value = value + 1;에 직접 해당합니다.
미리 감사드립니다.
저는이 두 값이 같을 것이라고 (3에서 4로) 이해합니다. 그러나 컴퓨터는이 둘을 동일한 것으로 보며 둘 다 표현으로 간주됩니까?"value"는 임의의 정수라고 가정하십시오. value ++는 value = value + 1;에 직접 해당합니다.
미리 감사드립니다.
예 : (value++)
은 이전 값으로 계산되지만, (value = value + 1)
은 새 값으로 계산됩니다.
식 내의 (value = value + 1)
의 직접 등가는 (++value)
입니다.
어느 쪽도 스레드로부터 안전하지 않습니다. 추가 재미를 들어
, 여기에 두 개 더 동등한 옵션입니다
value += 1;
value -= -1;
아니, 내 친구 ++ 값이 값에 해당 = 값 + 1이 새 값 선행 증가 연산자 과 가치를 변화로 ++입니다 메모리에 보관되어있는 이전 값을 변경하십시오. 즉, 포스트가 증가합니다.
올바르지 않습니다. 오히려 ++ 값은 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
. 'method (args) .field'와 같이'method (args) .field = object reference를 반환하면 ++ method (args) .field'는 메소드를 한 번 호출하고,'method (args) .field = method (args) .field + 1'은 그것을 두 번 호출합니다. – ajb
이 표현식을 평가 한 후 '값'내에있는 숫자와 표현식 자체의 값을 실제로 구별하는 유일한 대답입니다. 표현식의 값은 다르지만, 어느 한 표현식이 평가 된 후에도 (대상에 부작용이없는 것으로 가정하고 @ajb가 지적한 것처럼) 'value'는 같은 수를 유지합니다. –