java 면접문제-연산자++ 선후

13.class Happy {                   public static void main(String args[])     {                       int i = 1 ;                           int j = i++ ;                       if((i==(++j))&&((i++)==j))     {                           i += j ;                       }                       System.out.println("i = "+i);} 위 코드를 실행한 후 i를 출력하는 값은 얼마입니까?
A. 4
B. 5
C. 3
D. 6
 
java 기초면접 20문제 - 정답 해석판
 
정답은 B.
int i = 1 ;
int j = i++ ; 
i++, 우선 값을++에 부여하고,
이곳을 지나다
i=2    j=1
다음 단계
 if((i==(++j))&&((i++)==j)){}
if의 & & & 판단은 왼쪽에서 오른쪽으로 (i==(++j))
++j, 먼저++ 비교
이제 j=2, i==j가 true가 됩니다.
(외화 & & 왼쪽이false이면 오른쪽이 실행되지 않습니다. 여기는 구덩이를 파서 문제를 읽고 세심하게 관찰할 수 있습니다)
계속 걷기((i++)==j))
i++, 먼저++를 비교하고,
이 때 i=2, i==j는 true입니다.if 블록에 들어가기 전 i++, i=3
 i += j ; 
i=3,j=2,
마지막 i=3+2=5.
단점으로 한 걸음 한 걸음 결과를 보고 싶다면if의 & & & 를 뜯어서 쓰는 것을 권장합니다.코드는 다음과 같다.
       public static void main(String args[])     { 
            int i = 1 ;     
            int j = i++ ; 
            if((i==(++j))){ 
            	if(((i++)==j)){
            		i += j ; 
            	}
            } 
            System.out.println("i = "+i); 
        }

 

좋은 웹페이지 즐겨찾기