#include
int main(void)
{
float a;
a=3.0;
printf("%ld",a);
return 0;
}
在这种情况下为什么打印出来的结果是0?
3.0在栈里面的存储是01000000010000000000000000000000
在float类遇上printf()时会转换为double类型
用%ld打印读取4个字节
01000000000010000000000000000000也不该打印出0来啊
为什么?????????????????????
#include <stdio.h>
int main(void)
{
float a;
a=3.0;
printf("%ld",a);
return 0;
}
在我这里输出结果是140731755147032 (二进制11111111111111010101010010001100010111100011000)
这个不同编译器可能不同,毕竟你类型不对,所以和编译器的内存分配有关