为什么下述C语言温度转换程序运行后输出结果为37
运行结果异常的原因
C语言中整数和整数执行除法运算时默认走整数除法逻辑,会直接丢弃小数部分,仅保留整数位的结果。
你代码中的(9/5)两个操作数都是int类型,运算结果为1,并非预期的1.8。代入表达式计算可得:1 * 5.0 + 32 = 37.0,这就是输出结果为37的原因。
修复方法
只需要让除法的任意一个操作数变为浮点类型,就会触发浮点除法得到正确的运算结果,可选修改方案如下:
- 将
9/5修改为9.0/5 - 将
9/5修改为(float)9 / 5
修改后运算结果为1.8 * 5.0 + 32 = 41.0,符合摄氏温度转华氏温度的预期结果。
内容的提问来源于stack exchange,提问作者Abhiraj Das
相关产品推荐
相关产品推荐

