在阅读了有关未定义行为和序列点的答案后,我编写了一个小程序:
#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; ^
为什么?但可能我的第一个问题的答案会自动回答它。