mbo*_*ouz 2 c compiler-warnings
我试图理解为什么我的程序不会编译,
int myfunction(int x)
{
return x;
}
int main(){
int x = 10;
int result=0;
result=myfunction(x) * myfunction(++x);
printf("Result is = %d", result);
}
Run Code Online (Sandbox Code Playgroud)
执行后我得到:警告被视为错误在函数'int main()'中:'x'上的操作可能是未定义的.有人有想法吗?
myfunction(x) * myfunction(++x)未定义,因为operator *未指定两个参数的评估顺序.因此,可以首先执行第一次或第二次调用,这意味着理论上x或者++x可以首先评估,这可能导致不同的结果.理论上.在实践中,标准只是责任你不要这样做.