강의

멘토링

커뮤니티

Inflearn Community Q&A

junwoo6129290's profile image
junwoo6129290

asked

Following and Learning C++ with Hong Jeong-mo

3.6 Logical operators

3.6강의 16:49

Written on

·

260

1

if(x==1 && y++==2)에서

++가 ==보다 우선순위가 높아

y가 3이되고 2랑 같지않게되어서

False이므로 중괄호안에 문장이 실행되지 않아야하는거아닌가요?제가 안에 문장넣엇는데 실행이되어서 헷갈리네요..

c++

Answer 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 로 평가되어 중괄호 안의 코드 블럭이 실행되는 것입니다.

junwoo6129290's profile image
junwoo6129290

asked

Ask a question