• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

i 가 증가되지 않았다는 게 이해가 안갑니다.

22.03.24 21:05 작성 조회수 82

0

package assignment;

 

public class OperationEx3 {

public static void main(String[] args) {

int num1 = 10;

int i =2;

boolean value = ( ((num1=num1+10)>10)&&((i = i+2)>10) );

System.out.println(value);

System.out.println(num1);

System.out.println(i);

}

}

결과 : false

20

4

 

i 가 증가가 되지 않았다고 했는데 

이미 4로 증가되지 않았나요 ? (강의 22:42) 

답변 1

답변을 작성해보세요.

1

seung lee님의 프로필

seung lee

2022.03.24

((num1 = num1 + 10) > 10) && ((i = i+2) > 10)

&&는 앞부분식, 뒷부분식 둘다 참이어야지만 참인거 알죠?

&&앞부분 식이 참인건 알겠죠? num1이 10이니까 20>10은 참이잖아요

그럼 &&뒷부분까지 참인걸 따져봐야 전체가 참인지 알 수 있으니까 뒷부분의 명령도 실행해서 i에다가 i+2를 대입시키는 거예요

만약

((num1 = num1 + 10) < 10) && ((i = i+2) > 10)

          ( '<' 이 부호만 반대로 바꿨습니다.)

이렇게 코드를 짜놓으면 

&&앞부분이 거짓인건 알겠죠? num1이 10이니까 20<10 이 식은 거짓이잖아요. 그러면 뒷부분은 실행할 필요도 없이 전체 식이 거짓이 되는거라 뒷부분의 i=i+2 실행을 하지 않아서 증가하지 않는거예요