【发布时间】:2011-07-20 09:40:05
【问题描述】:
关于序列点的规则对以下代码有何规定?
int main(void) {
int i = 5;
printf("%d", ++i, i); /* Statement 1 */
}
只有一个%d。我很困惑,因为我在编译器 GCC、Turbo C++ 和 Visual C++ 中得到 6 作为输出。行为是否明确定义?
这和我的last question有关。
【问题讨论】:
-
Cripes 我希望这种代码不会在野外生存..
-
过于本地化。投票结束。
-
仅仅因为代码调用未定义的行为并不意味着您不会得到一致的结果。
-
@jaya:好的,我得问一下。为什么你接受了一个不正确的答案?
-
@Space_C0wb0y :接受的答案绝不是错误的。
标签: c++ c undefined-behavior