第一次发帖:有关C数据类型转换的问题,求高手.

时间:2022-12-11 20:41:49
//程序如下.实现将华氏温度转化为摄氏度和绝对温度的小程序.
#include<stdio.h>
void temperatures(float);
int main()
{
float huashi;//为何改成double调试时输入一个数输出结果是乱码,但是float不会??此处就是问题.麻烦高手指教.
printf("请你输入一个华氏温度:\n");
scanf("%f",&huashi);
printf("华氏温度为%.2f\n",huashi);
temperatures(huashi);
}
void temperatures(float fahrenheit)
{
float celsius=1.8*fahrenheit+32.0;
float kelvin=celsius+273.16;
printf("转化为摄氏度:%.2f\n",celsius);
printf("转化为绝对温度:%.2f\n",kelvin);
}

8 个解决方案

#1


scanf("%f",&huashi)    %f --> %lf  试试看

#2


"%f"在 scanf()中是 float,而在 printf() 中是 double

#3


printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

1.0是double常量
1.0f是float常量

%f对应float
%lf对应double

#4


C很规范的,按类型规范输入呀

#5


没有类型转换,只有格式解析

#6


很纠结!
java 、c++就没这么麻烦....

#7


用c++编译器会让你对错误不敏感

#8


float huashi
void temperatures(float fahrenheit)
要同步修改吧

#1


scanf("%f",&huashi)    %f --> %lf  试试看

#2


"%f"在 scanf()中是 float,而在 printf() 中是 double

#3


printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

1.0是double常量
1.0f是float常量

%f对应float
%lf对应double

#4


C很规范的,按类型规范输入呀

#5


没有类型转换,只有格式解析

#6


很纠结!
java 、c++就没这么麻烦....

#7


用c++编译器会让你对错误不敏感

#8


float huashi
void temperatures(float fahrenheit)
要同步修改吧