Possible Duplicates:
Parameter evaluation order before a function calling in C order of evaluation of function parameters
以下代码的输出是什么:

n=5;
printf("%d %d\n", ++n, power(2, n));

输出= 32
输出不应该是2 ^ 6 = 64吗?
不同的编译器会给出不同的结果吗?

最佳答案

未指定函数参数的评估顺序。编译器可以按自己喜欢的任何顺序计算参数,但是必须按某种特定顺序执行(因此这里没有未定义的行为)。输出可以是32或64。

UPD:这是错误的,这里有UB,请参见here

关于c - C中未定义的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6887890/

10-13 08:19