阅读有关未定义行为和序列点的答案后,我编写了一个小程序:
#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");