C语言入门者的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:11:12
#include <stdio.h>
void main()
{
float a,b;
a=3.4e38;
b=a+3.4e100;
printf("%f\n",b);
}
我打的这个东西 强调他是单精度的 那它的数值范围不是应该在-3.4E38~3.4E38吗 可为什么它不溢出
难道不同机器的单精度表示数值也不一样
嘿嘿~ 高手帮助下
那我怎样才能把它弄成单精度的??

强制转换没找到
找到了自定义类型输出

#include <stdio.h>
void main()
{
float a,b;
a=3.4e38;
b=a+3.4e100;
printf("%.3f\n",b); //"N.X"这个格式N表示.前面的输出位数,.后面X表示.后面的输出位数
}

明白了么···讲的够清楚了,不清楚的话发站内信给我。。。。。

float型计算输出时默认改为double型

我很明确地告诉你,b的结果绝不是正确的结果

8字节表示一个单精度的话
2^63是他最大的范围了
(2^10)^6*2^3=8*10^18<10^19
a=3.4e38; 就是3.4*10^38 这还能不超范围?

float型计算输出时默认改为double型

参考资料:程序员宝典

一楼正解,所以说,你编程时不要用float,直接用double就行,免得编译器转换费时间