printf("%f",5/3)的输出为什么是0.000000

不懂就要问.

环境为: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,这个是类型错误导致的,具体为什么这么解析,需要看源代码。
图片说明