강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

junwoo612님의 프로필 이미지
junwoo612

작성한 질문수

홍정모의 따라하며 배우는 C++

3.6 논리 연산자 logical operators

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 라면 다음과 같이 동작합니다.

  1. x == 1true 입니다.

  2. y++ 에서 y 의 현재 값인 2 를 반환합니다. 따라서, y++ == 2true 입니다.

  3. 연산이 끝난 후 y 의 값은 3 으로 증가합니다.


따라서, x == 1true 이고, y 의 값이 2 일 때, 위 if 조건문은 true 로 평가되어 중괄호 안의 코드 블럭이 실행되는 것입니다.

junwoo612님의 프로필 이미지
junwoo612

작성한 질문수

질문하기