정의되지 않은 동작 및 시퀀스 포인트에 대한 이 답변을 읽은 후 작은 프로그램을 작성했습니다.
#include <stdio.h>
int main(void) {
int i = 5;
i = (i, ++i, 1) + 1;
printf("%d\n", i);
return 0;
}
출력은 2
입니다. 오 하나님, 나는 감소가 오는 것을 보지 못했습니다! 여기서 무슨 일이 일어나고 있습니까?
또한 위의 코드를 컴파일하는 동안 경고 메시지가 나타납니다.
px.c : 5 : 8 : 경고 : 쉼표 식의 왼쪽 피연산자는 효과가 없습니다.
[-Wunused-value] i = (i, ++i, 1) + 1; ^
왜? 그러나 아마도 첫 번째 질문에 대한 답변으로 자동 응답 될 것입니다.
printf("2\n");