一个学习C语言时遇到的问题。

2024-11-26 19:34:16
推荐回答(6个)
回答1:

首先你要明白这样一个知识点:就是运算符两边的数如果一个是整型,一个是浮点形,那么其值为浮点型,这是系统自动转换的。如:5.0/9其中5.0是浮点型,9是整型,系统会自动将9转换成浮点型,所以其值为0.555555,如果是5/9因为5和9都是整型,其值也是整型,所以5/9为小于0.555555的整数,也就是0(注意,C语言规定是这样的,不能四舍五入)
然后再来说说你这个题:c=5/9*(F-32) 其执行顺序是先算F-32,由于F是浮点型,故其值为浮点型,然后执行5/9,显然5/9为0,所以无论你输入何值,c都为0;c=5*(F-32)/9其执行顺序为先算F-32,因为F为浮点型,所以F-32的值为浮点型,然后执行5*(F-32),因为F-32为浮点型,所以5*(F-32)的值为浮点型,然后再用5*(F-32)的值除以9,因为5*(F-32)为浮点型,所以5*(F-32)/9就为浮点型,其值就能正确输出。
讲了这么多,希望你能明白!

回答2:

5/9结果按int型保存为0,再乘任何值都是0。“5*(F-32)/9”中的F为float型,表达式结果就按float型保存了。
解决办法:
(1)c=(float)5/9*(F-32); //强制类型转换
(2)c=5.0/9*(F-32); //5.0表示float型

回答3:

把5/9=0 改成5/9.0=0

回答4:

/和*是同级的运算符,/表示的是除后取整,/在前的话,5/9等于0,所以最后结果必为0.00

回答5:

5.0/9.0

回答6:

getchar();的作用是把第一次通过scanf("%f,%f",&x,&y
输入的回车符赋给getchar();
以免用scanf("%c",&op);
的时候回车符赋给了op
用scanf("%c",&op);
是会把回车符作为一个字符赋值给一个字符变量的