关于浮点数和用%d输出float的有关问题
关于浮点数和用%d输出float的问题
各位大神好,我尝试用两种方法强制编译器用整型指令来读取浮点值(其实就是想有一些比特值,是不是浮点数倒是无所谓),不知道结果为什么不一样
第一种,用%d来输出float,压入printf参数栈的肯定是float a的值,应该没有问题
第二种,强制指针类型转换,因为float和int都是4个字节,用int *指向float变量的地址,按理说也应该是合理的。
但是这两种方法输出的结果不一样,
第一种输出了0
第二种输出了1093567616
我猜测是强制指针类型转换出了问题,但是不明白其中的机理,拜求大神解释
或者手动用浮点数原理换算一下,看看到底那个值是错误的?
------解决方案--------------------
浮点数入栈后是double了.
------解决方案--------------------
浮点数压栈时转成double了,
各位大神好,我尝试用两种方法强制编译器用整型指令来读取浮点值(其实就是想有一些比特值,是不是浮点数倒是无所谓),不知道结果为什么不一样
第一种,用%d来输出float,压入printf参数栈的肯定是float a的值,应该没有问题
第二种,强制指针类型转换,因为float和int都是4个字节,用int *指向float变量的地址,按理说也应该是合理的。
但是这两种方法输出的结果不一样,
第一种输出了0
第二种输出了1093567616
我猜测是强制指针类型转换出了问题,但是不明白其中的机理,拜求大神解释
或者手动用浮点数原理换算一下,看看到底那个值是错误的?
#include <stdio.h>
int main(){
float a = 1000000;
int *b = (int *)&a;
printf("%d\n%d", a, *b);
getchar();
}
------解决方案--------------------
浮点数入栈后是double了.
------解决方案--------------------
浮点数压栈时转成double了,