c语言中int 和float 形数据的限制是多少?

c语言中int 和float 形数据的限制是多少?,第1张

c语言标准库提供了limits.h和float.h用于说明整数和浮点型数据的限制。

limits.h:用于检测整型数据数据类型的表达值范围。

float.h :提供了浮点型的范围和精度的宏,该头文件没有类型和函数的定义,一般用于数值分析。

可以直接使用里面定义的宏,比如下面的代码输入有符号int类型的最大值和最小值,以及float类型的最大值和最小值。

#include<stdio.h>

#include <limits.h>

#include <float.h>

int main()

{

    printf("int最大值:%d\t最小值:%d\n", INT_MAX, INT_MIN)

printf("float最大值:%e\t最小值%e\n",FLT_MAX,FLT_MIN)

    return 0

}

-------符号位--指数位----小数部分----(指数偏移量 )

单精度浮点数-1位[31]--8位 [30-23]-23位 [22-00]----(127)

一般情况下,

int在内存里以2进制补码存储,跟你想的差不多,这个就不用多说了;

float存储方式如上面所示,1位符号位,指数位8位,小数位23位,共32位即4个字节。假设小数位表示的纯小数为x,指数表示的数字为n,符号为负,则这个float数字为(-(1+x))×(2^n)。

纯小数部分用补码表示,小数位的位数与可以表示的数据范围无关,只与可以表示的有效数字有关,即表示精度有关。

指数位部分用移码表示,所以可以表示的大小是2^-127到2^128,即最大的数是2^128=3.4E38。也就是说表示范围是-3.4E-38到3.4E38。

你仔细看好了,那个float后面括号中两个数字之间并不是点,而是逗号。

不是指6.1,而是指这个浮点数最大长度为6,也就是六位,然后小数部分为1位。

至于存储范围,取决于你是否定义了无符号。

无符号的话,最小是0.0 最大能存储到99999.9,如果有符号的话,范围是:-99999.9至99999.9

这样的话,你是否明白了呢?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9878579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存