인프런 커뮤니티 질문&답변
3.6강의 16:49
작성
·
260
1
if(x==1 && y++==2)에서
++가 ==보다 우선순위가 높아
y가 3이되고 2랑 같지않게되어서
False이므로 중괄호안에 문장이 실행되지 않아야하는거아닌가요?제가 안에 문장넣엇는데 실행이되어서 헷갈리네요..
답변 1
3
안녕하세요, 답변 도우미 Soobak 입니다.
후위 연산자의 작동 방식을 이해하시는 것이 중요합니다.
질문해주신 코드 라인에서 y++ 는 후위 증가 연산자 입니다.
해당 연산자는 변수의 현재 값을 먼저 반환하고, 그 다음 변수의 값을 1 증가 시킵니다.
즉, 만약 y 의 값이 2 라면, y++ 는 먼저 2 를 반환한 다음에 y 의 값을 3 으로 증가시킵니다.
질문 주신 코드의 동작 방식을 구체적으로 살펴보면 다음과 같습니다.
if (x == 1 && y++ == 2) {
// ...
}: 위 코드에서 x 의 값이 1 이고, y 의 값이 2 라면 다음과 같이 동작합니다.
x == 1은true입니다.y++에서y의 현재 값인2를 반환합니다. 따라서,y++ == 2는true입니다.연산이 끝난 후
y의 값은3으로 증가합니다.
따라서, x == 1 이 true 이고, y 의 값이 2 일 때, 위 if 조건문은 true 로 평가되어 중괄호 안의 코드 블럭이 실행되는 것입니다.





