我想了解为什么我的程序无法编译,
int myfunction(int x)
{
return x;
}
int main(){
int x = 10;
int result=0;
result=myfunction(x) * myfunction(++x);
printf("Result is = %d", result);
}
执行后我得到:警告被视为错误 在函数“int main()”中:对“x”的操作可能未定义。 有人有想法吗?
最佳答案
myfunction(x) * myfunction(++x)
未定义,因为 operator *
的两个参数的求值顺序未指定。所以第一个或第二个调用都可以先执行,这意味着理论上 x
或 ++x
可以先计算,这会导致不同的结果。理论上。实际上,该标准只是将不这样做的责任转嫁给您。
关于c - 意外的 C 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147189/