【发布时间】:2014-09-30 10:00:57
【问题描述】:
#include<stdio.h>
int main()
{
int a=1;
printf("%d%d%d",a,++a,a++);
}
为什么输出是 331 而不是 122。
我在互联网上找到的原因是争论是从右到左传递的。首先 a++ 然后 ++a 然后 a 被评估,然后以相反的顺序打印。这个理由对吗。
【问题讨论】:
-
不告诉我原因
-
原因 - 未定义的行为
-
@cool guy 但我的书说这与调用约定有关
-
你的书错了。对此感到抱歉。
-
阅读作为问题 n.m. 的第二个答案发布的链接。链接到:c-faq.com/expr/seqpoints.html 这是这里唯一有效的答案。
标签: c function calling-convention