작성
·
227
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
안녕하세요. 답변 도우미입니다.
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
1
안녕하세요.
먼저 x++같은것을 증감연산자라고 합니다.
증감연산자에는 총 4가지있는데 ++x, x++, --x, x--가 있습니다.
마이너스가 붙는것은 플러스와 중첩됩므로 설명은 생략합니다.
x++는 나중에 1을 더하는것이고 ++x는 먼저 1을 더하는것입니다.
결과적으로 뭐냐면 1>0를 한다음에 2+2==4가 됩니다.
감사합니다.