打印浮点值时出现问题

use*_*209 1 c c++ printf

#include<stdio.h>
#include<math.h> 
int main()
{
   float i = 2.5;
   printf("%d\n%d\n%d",i,i,i);
}
Run Code Online (Sandbox Code Playgroud)

当我使用gcc编译它并运行它时,我得到它作为输出:

0
1074003968
0
Run Code Online (Sandbox Code Playgroud)

为什么不打印

2
2
2
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 12

你正在传递一个float(将被转换为a double)printf,但是要告诉printf他们int.结果是未定义的行为,所以至少在理论上,任何事情都可能发生.

什么会通常发生的是,printf将检索sizeof(int)从堆栈中的字节,并解释任何位模式,他们持有作为int,并打印出来,恰好代表了什么价值.

你几乎可以肯定要的是投floatint它传递给前printf.