작성
·
126
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
((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 실행을 하지 않아서 증가하지 않는거예요