• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

3.6강의 16:49

23.09.14 13:24 작성 조회수 171

1

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

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

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

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

답변 1

답변을 작성해보세요.

3

Soobak님의 프로필

Soobak

2023.09.15

안녕하세요, 답변 도우미 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 로 평가되어 중괄호 안의 코드 블럭이 실행되는 것입니다.