【问题标题】:Unexpexted printf statement in c [duplicate]c中意外的printf语句[重复]
【发布时间】:2015-12-27 19:32:02
【问题描述】:

我正在制作一个小程序,将摄氏温度转换为华氏度和开尔文度 它使用一个函数,该函数将指向 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 开尔文

有什么想法吗?

【问题讨论】:

    标签: c pointers function-pointers


    【解决方案1】:
    printf("%dce = %f = %dK\n",akc,thermo(&akc),akc);
    

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

    【讨论】:

      猜你喜欢
      • 2015-08-31
      • 2021-10-01
      • 1970-01-01
      • 2020-03-27
      • 2021-12-28
      • 1970-01-01
      • 2022-12-21
      • 2017-10-28
      • 2015-01-10
      相关资源
      最近更新 更多