• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

질문드립니다.

21.03.17 11:10 작성 조회수 142

1

24:32초 에서 

int x = 1, y = 2;

if (x++ > 0 && x + y == 4)

{

printf("%d %d\n", x, y);    

}

여기에서 x++가 && 연산자를 만나면 실행이 된다고 하셨는데 그러면 x++>0에서는 1>0 으로 비교를 하고 true가 된 이후에 1이 증가하여 2+2==4 를 비교하게 되는건가요?

아니면 2>0로 비교를하고 2+2==4가 되는건가요..?

답변 3

·

답변을 작성해보세요.

4

안소님의 프로필

안소

2021.03.17

안녕하세요. 답변 도우미입니다.

i++ 이렇게 뒤에 붙는건 기존의 i 값을 먼저 내뱉은 후에 증가가 된다고 생각하시면 됩니다. 

즉 a = 3 일때 a++ 는 3 을 내뱉고나서야 4 가 됩니다. 즉 a++ = b 를 한다면 b 에게 기존 a 값인 3 을 건네주고나서야! a 값이 4 로 변경됩니다. 이 연산이 모두 끝나면 a 는 4, b 는 3 이 됩니다. 

사실 시스템상 더 정확한 순서를 말씀드리자면

1. a 의 기존 값을 임시 공간에 복사

2. a 값 1 증가

3. 임시 공간에 복사해둔 a의 기존값을 b 가 받게 됨

위와 같은 순서로 이루어집니다.

반면 ++i 이렇게 앞에 붙는건 반대로 증가부터 먼저시킨 후 변경이 된 i 값을 내뱉습니다.

즉, ++a = b 는 b 에게 미리 증가시킨 후의 값을 건네주었기 떄문에 a 와 b 모두 4 가 됩니다. 

감사합니다.

1

&&만나고 난 뒤에 증가가되서 오른쪽 x에 영향을 주는거군요. 감사합니다.

1

haon님의 프로필

haon

2021.03.17

안녕하세요.

먼저 x++같은것을 증감연산자라고 합니다.

증감연산자에는 총 4가지있는데 ++x, x++, --x, x--가 있습니다.

마이너스가 붙는것은 플러스와 중첩됩므로 설명은 생략합니다.

x++는 나중에 1을 더하는것이고 ++x는 먼저 1을 더하는것입니다.

결과적으로 뭐냐면 1>0를 한다음에 2+2==4가 됩니다.