1 답변
-
안녕하세요! 결론부터말하면 코드안의 주석과같은 값이 들어있습니다.
int x = 10, y = 10, z; //10 10 ? x = y++; //10 11 ? z = ++x % 3; //11 11 2
먼저 첫째줄에서는 x = 10, y = 10, z = ?죠?(z에는 쓰레기값이 들어있습니다.) 둘째줄은 x = 10, y = 11, z = ? 입니다.(z는 변동이없기때문에 마찬가지로 쓰레기값입니다.) y는 ++로 1을 더했기때문에 11이 될거라고 생각했지만 "왜 x는 11이 아니냐?"라는의문이 생길 수 있습니다.
천천히설명하면 먼저 ++, --같은것을 증감연산자라고합니다.
증감연산자는 1을 더하거나 빼는역할을 하는데 종류는 4가지있습니다.
i++, ++i, i--, --i 이런게있는데#include <stdio.h> int main() { int n; n = 5; printf("%d\n", n++); //출력 5 n = 5; printf("%d\n", ++n); //출력 6 n = 5; printf("%d\n", n--); //출력 5 n = 5; printf("%d\n", --n); //출력 4 return 0; }
같은코드가있을때 처음의 n++는 역할(출력)을 한다음에 1증가하고 ++n는 1을 증가한다음에 출력하기때문에 6이 출력됩니다.(마이너스--도 순서는 똑같습니다.)
int x = 10, y = 10, z; //10 10 ? x = y++; //10 11 ? z = ++x % 3; //11 11 2
다시질문으로 돌아오면 둘째줄의
x = y++
는 역할(대입)한다음에 1증가하기때문에 x에는 원래y(10)가 들어갑니다. 셋째줄은z = ((++x) % 3)
이런 순서가되면서 x는 먼저더하고 대입하기때문에x = 11
,z = (11 % 3)
그래서z = 2
가됩니다. 참고로 (괄호)는 필요없지만 일부러 붙여놨습니다.모르는게 있으면 물어주세요. 감사합니다.
댓글 입력