练习题 华氏温度转摄氏温度

题干:
在这里插入图片描述
代码如下:

#include <iostream>
using namespace std;
int main()
{
double F;
cin>>F;
double c=(double)5/9*(F-32);//这里多了个double
cout<<c<<endl;
return 0;
}

验证答案:
在这里插入图片描述
最开始编辑此代码的时候,可能会发现无论输入什么数字,其输出值都为“0”,其实这是犯了一个很基础的错误。
仔细观察上边的代码,很容易发现我在定义变量“c”的时候在后面多加了一个“(double)”,这个符号的意思是把其后数据(这里是那个整数“5”,很明显是int类型)的数据类型强行转换为double类型。
因为我们都知道int类型的数相除会有一个特性,那就是舍去小数点后的所有数字(也就是说输出数据的数据类型还是int类型),比如说“3/2”理论上来讲得数是“1.5”,但是实际输出却是“1”,那是因为“3”和“2”两个数都是整数,都默认为int类型,相除就会出现这样的特性。当我们用“(double)”将“3”的数据类型强行转换为double类型,那么这样的特性就不会触发,输出数据的数据类型就会变为double类型,会存在小数。
于是,如果我们不这样操作的话,“5/9”的值将会一直为“0”,这样无论我们输入什么数据,最终答案将都为“0”。
另外,上面的代码把“(double)”移动到“9”的前面其实也是一样的效果,甚至还可以直接把“5”或“9”写成“5.0”和“9.0”这样的小数形式,也就是说,只要相除的两个数其中一者不为int类型,那么结果就不会舍去小数点后的数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值