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/