【问题标题】:Explain output of following C program [duplicate]解释以下C程序的输出[重复]
【发布时间】:2013-08-18 06:48:51
【问题描述】:
#include <stdio.h>
main()
{
int a=1;
printf("%d %d %d %d %d\n",++a,a++,++a,++a,a++);
a=1;
printf("%d %d %d %d %d",a,a++,a,++a,a);
}

当我运行它时,它会给出以下输出。

6 4 6 6 1
3 2 3 3 3

请解释一下代码。

【问题讨论】:

  • 听起来像是功课。
  • 我是C语言新手...请解释一下代码..这不是功课...
  • @user1521160 解释需要背后的定义。这里没有明确的行为。每个函数参数项的表达式求值顺序是定义的,因此行为也没有定义。 请参阅上面的第一条评论。。当你运行这段代码时,它很容易在你的 DVD 驱动器中产生一种新的细菌。因此 undefined. 的性质
  • 除了阅读 WhozCraig 的链接之外,您可能还应该阅读运算符优先级和关联性 - 您已将它们添加为标签,但它们与此代码无关。

标签: c operator-keyword operator-precedence associativity


【解决方案1】:

未定义函数参数的求值顺序,因此++ 运算符可以按任何顺序应用。您正在查看未定义行为的结果。

【讨论】:

    猜你喜欢
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多