printf() 函数在 printf("%d %d %d",a,a=a+5,a); 中的行为如何? [重复]

问题描述 投票:0回答:1

我认为,下面给出的 c 中的代码示例应该输出:10,15,10。但它给出输出:15,15,15。我的问题是这个结果是怎么来的?

#include <stdio.h>

int main() {
    int a=10;
    printf("%d %d %d",a,a=a+5,a);

    return 0;
}
c printf
1个回答
0
投票

那么你就处于未定义行为的领域。

C 标准没有说明参数的求值顺序。

因此,在一个编译器上,可能会首先评估正确的“a”,然后是

a=a+5
,然后第一个将是 15。

然后你会得到 15、15、10。

另一个编译器将以相反的方式进行评估。

然后你会得到 10, 15, 15

© www.soinside.com 2019 - 2024. All rights reserved.