gpt4 book ai didi

c - c 中意外的 printf 语句

转载 作者:行者123 更新时间:2023-11-30 20:36:56 25 4
gpt4 key购买 nike

我正在制作一个小程序,将摄氏度转换为华氏度和开尔文度它使用一个函数,该函数接受一个指向 int 的指针作为参数并返回华氏度。当程序结束时,我必须更改 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 开尔文

有什么想法吗?

最佳答案

printf("%dce = %f = %dK\n",akc,thermo(&akc),akc);

C 中未指定函数参数的计算顺序。您不能假设第一个参数将被计算,然后是第二个,依此类推。要解决此问题,您可以将结果保存在临时变量中。

关于c - c 中意外的 printf 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34484043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com