java 논리연산자 || 질문있습니다

조회수 540회
int x = 100;
int y = 200;
boolean result = false;


result = x > y || y++ > 200;
System.out.println("x > y || y++ > 200 = " + result);

|| 연산자는 둘중에 하나라도 참이면 참을 표시한다고 하는데 y++면 값이 201이 되는거 아닌가요? 그럼 참으로 표시 되어야하는거 아닌가요??

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    자바를 거의 모르지만... 구글에 대고 java ++ operation 이라고 검색해 보니 이런 정보가 나오네요.

    핵심은, ++a는 값을 증가시킨 다음 바로 그걸 돌려준다는 겁니다. a++도 값을 (뒤에서) 증가시키기는 하지만 반환되기로는 아직 변화되지 않은 값이 그대로 반환됩니다. 그래서 실제로는 나중에 실행이 되는 것처럼 보이죠.

    그러면 원하시는 것은 아마도:

    int x = 100;
    int y = 200;
    boolean result = false;
    result = (x > y || ++y > 200); // <-- 여기 중요
    System.out.println("x > y || ++y > 200 --> " + result); // --> true
    
    • 아.. 저걸 제대로 못봤네요.. 감사합니다! 강동우 2019.10.22 10:09

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)