不懂就要问.
环境为:Win10+vs2015
执行代码如下:
printf("%f\n", 5 / 3); //0.000000
printf("%f\n", (double)(5 / 3)); //1.000000
printf("%d\n", 5 / 3); //1
问题:
为什么第一行的代码得到的结果会是0.000000?
printf 不会做类型转换,格式%f必须对应浮点数,否则结果未知
5/3.0 你在试试看
我觉得可能是类型不同的问题,只是猜测,你试试用浮点型输出 int long byte类型的 1 试试
也可能是int 和 float都是4字节 32位二进制 类型不同他们每位代表的意思不同,同样一串32位二进制通过另一种方式输出识别方式不同
事实证明,printf("%f", 任意整数)都是0.0000,这个是类型错误导致的,具体为什么这么解析,需要看源代码。