【发布时间】:2025-11-25 23:00:01
【问题描述】:
可能重复:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
我无法理解这个程序的输出(使用gcc)。
main()
{
int a=10;
printf("%d %d %d\n",++a, a++,a);
}
输出:
12 10 12
另外,请解释printf()的参数的评估顺序。
【问题讨论】:
-
当你发布作业时,这没关系,至少表明你在把它发布到 SO 之前已经尝试解决这个谜题。只是分享你到目前为止的想法。其他的都太懒惰了。
-
然后阅读更多......和适当的文档:函数指示符、实际参数和实际参数中的子表达式的评估顺序未指定,但在实际调用之前有一个序列点.
-
不保证在 printf 中从右到左进行评估。