Java의 후위 증분 연산자
질문:
아래 코드에서 그 이유는 무엇입니까? 후위 증가 연산자 j는 j에 0을 할당합니까?
public class Test { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 } }
"Java Puzzlers"라는 책의 저자에 따르면 j = j 문은 다음 순서와 유사합니다.
temp = j; j = j + 1; j = temp;
그러나 a = b 문은 b에 값 1을 할당하는데, 이는 사후 증가 연산자의 예상 동작과 모순됩니다.
답변:
논쟁은 증분 규칙을 적용한 다음 a = b에 할당하지만 j = j에는 할당하지 않는 것입니다. a = b에 대한 올바른 연산 순서는 다음과 같습니다.
temp = b; b = b + 1; // increment a = temp; // assign
j = j에 동일한 규칙을 적용하면 다음과 같은 결과를 얻습니다.
j = j; j = j + 1; // increment
j의 초기 값은 0이므로, 증분 전의 j 값이 표현식에 사용되기 때문에 사후 증분 연산자는 0을 반환합니다.
따라서 대입문이 j = 0으로 평가되므로 j의 최종 값은 0입니다.
위 내용은 j = j가 Java에서 j에 0을 할당하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!