C—整数与浮点数笔记

来源:互联网 发布:人工智能硬件有哪些 编辑:程序博客网 时间:2024/05/16 18:28

整数与浮点数是c语言数据类型中两大系列,其中包含了多种数据类型。整型与浮点型拥有不同的储存方式,浮点型与整型不同,它是以小数位和幂指数形式储存的。


整型:包括int/short/unsigned/long/long long/

仅能保证short不比int长,long不比int短,long long不比long短,int所占据空间由操作系统决定,通过使用sizeof测试一台64位linux得到以下结果:

the length of int in this computer is 4
the length of short in this computer is 2
the length of long in this computer is 8
the length of long long in this computer is 8
the length of unsigned in this computer is 4
the length of unsigned long in this computer is 8
the length of unsigned long long in this computer is 8

数字代表字节,一个字节为八位,一位储存0或1.

变量的值超出这个范围会发生溢出,有符号类型可能溢出到负值,unsigned会溢出到起点0.

希望把一个较小的整数当成long来看待,可以以后缀L表示,另外类似的有ll,ull。

打印时类型搭配说明符错误的话会产生错误,例如将unsigned以%d输出会以int的格式读取,从而产生错误。

char类型储存的是字符,但技术上的实现是整数类型。ASCII码中char为一个8位。其初始化时字符以单引号标记为字符,双引号视为字符串。

浮点型:包括float/double/long double/

c标准规定,float至少能表示6位有效数字取值至少为10^(-37)~10^(37)系统一般用32位储存,其中8位表示指数和指数的符号,其他位表示有效数字及其符号,double与float有相同的最小取值和范围要求,但必须能表示10个有效数字,储存它需要64位,比float多出的32位全部或部分分配给有效数字。

为满足更精确的需求,c提供了long double,不过只能保证long double至少和double一样精确。

编译器将浮点常量默认为double类型,除非以后缀标记。

浮点数上溢和下溢,对于系统所不能表示的大数,以一个无穷大表示。对于很小的数,继续进行变小的运算,会损失精度发生下溢。

0 0