#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,并打印出来,恰好代表了什么价值.
你几乎可以肯定要的是投float给int它传递给前printf.