我认为,下面给出的 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 标准没有说明参数的求值顺序。
因此,在一个编译器上,可能会首先评估正确的“a”,然后是
a=a+5
,然后第一个将是 15。
然后你会得到 15、15、10。
另一个编译器将以相反的方式进行评估。
然后你会得到 10, 15, 15