我正在制作一个小程序,将摄氏温度转换为华氏度和开尔文度 它使用一个函数,它将指向int的指针作为参数并返回Fahrenait。当程序结束时,我必须更改akc整数的值,这是我将摄氏温度保存为开尔文度的地方 这就是我所做的。
float thermo(int *);
int main(){
int akc;
akc=100;
printf("%dce = %f = %dK\n",akc,thermo(&akc),akc);
system("pause");
return 0;
}
float thermo(int *akc){
float a=*akc;
*akc+=273;
return 9*a/5+32;
}
我的问题是,当我打印所有值时,我得到以下输出:
373摄氏度= 212.000000华氏度= 100开尔文
但结果应为
100摄氏度= 212.000000华氏度= 373开尔文
有什么想法吗?
答案 0 :(得分:0)
printf("%dce = %f = %dK\n",akc,thermo(&akc),akc);
函数参数的评估顺序在C中未指定。您不能假设将评估第一个参数,然后是第二个,等等。要解决此问题,您可以将结果保存在临时变量中。