The*_*tig 5 c gcc increment
int a=5; printf("%d %d %d\n",a++,a++,++a);
Gcc输出:7 6 8
有人可以解释一下答案.如果这个问题已经重复,我很抱歉,但我无法找到它.
谢谢!!
Mar*_*ers 19
行为未定义,因为增量运算符之间没有序列点.
解释为什么代码执行它所做的是一个毫无意义的练习.您不应编写具有未定义行为的代码,即使它似乎适合您.
为了解决注释中提出的问题:逗号运算符确实充当了序列点,但这里的逗号不是逗号运算符.来自维基百科:
使用逗号标记作为运算符不同于它在函数调用和定义,变量声明,枚举声明和类似结构中的使用,它用作分隔符.
归档时间:
15 年,3 月 前
查看次数:
179 次
最近记录:
12 年,3 月 前