2014-06-17 2 views
2
int k=0; 

switch (k++) { 
    case 0: System.out.println("0 is "+k); 
} 

출력 :자바 스위치 문

0 1

왜 1? 그것은 여전히 ​​스위치 운영자이므로 스위치를 빠져 나온 후에 증가시켜야합니다.

+6

증가분은 즉시 * 걸립니다. '0'이 반환되면 'k'가 증가하고 프로그램이 계속됩니다. 거친 근사치와 완벽하게 정확한 것은 아니지만 일반적인 생각입니다. – awksp

답변

3

포스트 픽스는 현재 블록 이후가 아니라 평가 후 증분된다는 것을 의미합니다. 이 경우 평가되고 k가 증가한 다음 평가로 분기됩니다. 정확히 그렇듯이.

0

switch 문이하는 첫 번째 작업은 표현식 (k++)을 처리하는 것입니다. 반환 된 결과는 대/소문자 값과 비교됩니다. 그러나 k++이 이미 처리되었으므로 k의 값은 1입니다. 후위 연산자이므로 리턴 된 값은 증가하기 전의 값입니다. 따라서 표현식 실행 후 값은 1이긴하지만 0이 반환됩니다.