Kernighan 和 Ritchie 的第 1.3 节使用以下温度转换程序来介绍 For 语句:
#include <stdio.h>
/* print Fahrenheit-Celsius table */
int main(){
int fahr;
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}
它没有解释这个程序如何使用 int 变量来生成浮点值而不会出现错误。是什么让这个有效?方程中的所有变量都必须是同一类型吗?在不理解这一点的情况下,我犹豫是否继续前进。
最佳答案
转换是隐式的,但启用警告应该会向您显示一条消息,解释 int 正在转换为 double。
这里(5.0/9.0)*(fahr-32))
,一个 double 乘以一个 int,然后使用通常的算术转换将 int 转换为 double。
算术中的类型不一定必须匹配。 C 有整整一章专门讨论转换:6.3 转换,6.3.1 算术操作数。
关于c - K&R C 章练习 int 到 float?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34661327/