저는 ++a랑 a++랑 구분할 때 이런 식으로 구분했거든요?
a++는 a를 리턴하고 a를 1 증가시킨다.
++a는 a를 1 증가시키고 그것을 리턴한다.
지금까지 사용하는데 아무런 문제도 없었고요.
그런데 ㅋㅋㅋㅋ
a = 0; printf("%d, %d, %d\n", ++a, a++, a);
// 예상 : 1, 1, 2
// 결과 : 2, 0, 2
a = 0; printf("%d, %d, %d\n", a++, ++a, a);
// 예상 : 0, 2, 2
// 결과 : 1, 2, 2
a = 0; printf("%d, %d, %d\n", a++, a++, a);
// 예상 : 0, 1, 2
// 결과 : 1, 0, 2
a = 0; printf("%d, %d, %d\n", ++a, ++a, a);
// 예상 : 1, 2, 2
// 결과 : 2, 2, 2
뭔가요 이게 ㅋㅋㅋㅋㅋ
한 줄에 두개 이상 쓰면 결과가 이상하게 되네요?ㅋㅋㅋㅋ
앞에부터 차례대로 계산되는 거 아닌가요?
예상이랑 다 달라요 ㅋㅋㅋ
왜 그러죠?
혹시나 printf 함수에서 파라미터 처리할 때 순서대로 안 하나?
해서 다른 방법으로도 해봤는데요.
a = 0; printf("%d\n", a++ + a++);
// 예상 : 1
// 결과 : 1
a = 0; printf("%d\n", a++ + ++a);
// 예상 : 2
// 결과 : 2
a = 0; printf("%d\n", ++a + a++);
// 예상 : 2
// 결과 : 3
a = 0; printf("%d\n", ++a + ++a);
// 예상 : 3
// 결과 : 4
??
왜 그럴까요.
C 말고 다른 걸로도 해보려다가 안 해봤어요.