class std
{
public static void main(String[] args)
{
int num1 = 0, num2 = 0;
boolean result;
result = (num1 += 10) < 0 && (num2 += 10) > 0;
System.out.println("result = " + result);
System.out.println("num1 = " + num1 + ", num2 = " + num2);
result = (num1 += 10) > 0 || (num2 += 10) > 0;
System.out.println("result = " + result);
System.out.println("num1 = " + num1 + ", num2 = " + num2);
}
}
이 코드를 돌리면
result = false
num1 = 10, num2 = 0
result = true
num1 = 20, num2 = 0
이렇게 나옵니다.
두 번의 num2 연산이 왜 증가되지 않는 것인가요??
연산 순서 생각해봐
&&연산의 경우 앞자리가 거짓이면 뒷자리를 연산안하고 ||연산의 경우 앞자리가 참이면 뒷자리를 연산안함
(num1 = 10) < 0 에서 false가 났으므로
연산이 생략되지요~ - DCW
orelse도 마찬가지고 - DCW
short circuit evaluation