首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于浮点数和用%d输出float的有关问题

2013-09-06 
关于浮点数和用%d输出float的问题各位大神好,我尝试用两种方法强制编译器用整型指令来读取浮点值(其实就是

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


#include <stdio.h>
int main(){
    float a = 1000000;
    int *b = (int *)&a; 
    printf("%d\n%d", a, *b);
    getchar();
}

[解决办法]
浮点数入栈后是double了.
[解决办法]
浮点数压栈时转成double了,

热点排行