저렇게 하면 결과값이
이렇게 나옵니다ㅠㅠ 한줄씩 짤라서 하면 예제대로 나오는데 한줄에 다 쓰면 이상하게 나오네요. 왜이럴까요?
printf("%d %d %d %d %d", x++, x++, x++, x++, x++); 해보면 제일 끝 인자부터 실행되는 거 알 수 있는데
그리고 중간에 6나오는 건 square(x++)이 컴파일할 때 ((x++) * (x++))로 바뀌는 데 이게 후위 연산의 특성때문에 (((x) * (x)) ++)++로 바뀌어서 그런듯
6 다음에 처리되는 square(++x)는 전위 연산이라서 ((++x) * (++x))의 양 ++가 먼저 처리되서 (6 * 6)이 되는 거임
printf("%d %d %d %d %d", x++, x++, x++, x++, x++); 해보면 제일 끝 인자부터 실행되는 거 알 수 있는데
그리고 중간에 6나오는 건 square(x++)이 컴파일할 때 ((x++) * (x++))로 바뀌는 데 이게 후위 연산의 특성때문에 (((x) * (x)) ++)++로 바뀌어서 그런듯
6 다음에 처리되는 square(++x)는 전위 연산이라서 ((++x) * (++x))의 양 ++가 먼저 처리되서 (6 * 6)이 되는 거임