)
数据类型C语言中的数据类型包括基本数据类型与构造数据类型一、基本数据类型整数类型、浮点类型、字符类型、缺省类型、布尔类型1.整数类型1整数类型64位操作系统短整型short在内存中占2字节、整型int在内存中占4字节、长整型long在内存中占8字节根据有无符号是否可以表示负数又可分为无符号短整型unsigned short没有符号位全部16位用来存值只能存大于等于0的数取值范围为0 ~ 655350 ~ 2^16-1有符号短整型signed short最高位为符号位最高位0正数最高位1负数取值范围为-32768 ~ 32767-2^15 ~ 2^15-1无符号整型unsigned int没有符号位全部32位用来存值只能存大于等于0的数取值范围为0 ~ 2^32-1有符号整型signed int最高位为符号位最高位0正数最高位1负数取值范围为-2^31 ~ 2^31-1无符号长整型unsigned long没有符号位全部64位用来存值只能存大于等于0的数取值范围为0 ~ 2^64-1有符号长整型signed long最高位为符号位最高位0正数最高位1负数取值范围为-2^63 ~ 2^63-12整数类型在内存中的存储方式整型数据在内存中以补码的形式存储其中无符号数的补码原码有符号数正数的补码为原码本身负数的补码为反码1原码按位取反后加13整型溢出当整型数据超过其取值范围时会出现补码环绕现象例如最大值 1 最小值最小值 - 1 最大值需要注意对无符号整型溢出有明确规则自动对最大值 1 取模形成补码循环对于有符号整型溢出在C语言标准中属于未定义行为即理论上结果不确定但通常仍会采用补码循环2.浮点类型1浮点类型单精度浮点型float、双精度浮点型double默认情况下浮点数都有符号)单精度浮点型float在内存空间中占4字节有效精度6 ~ 7位有效数字双精度浮点型double在内存空间中占8字节有效精度15 ~ 16位有效数字在无特殊说明情况下浮点常量默认为double2浮点类型在内存中的存储方式所有floatdouble遵循IEEE754标准存储分成三段符号位指数位尾数位对于float共32位1位符号位8位指数位23位尾数位例如6.25D转换为110.01B再转换为科学计数法1.1001*2^2指数为22127偏移量用于解决指数为负的情况129将129D转换为10000001B得到指数位尾数为1001不足23位用0补齐得到尾数位10010000000000000000000故6.25在内存中存储方式IEEE754标准为0符号位1000 0001指数位1001 0000 0000 0000 0000 000尾数位对于double共64位1位符号位11位指数位52位尾数位double指数位的偏移量为10233.字符类型字符类型包含字符常量与字符变量详情见从零开始的敲代码生活--C语言篇常量、变量、表达式4.缺省类型C语言中常见的缺省类型 有void 函数的返回值函数参数等5.布尔类型布尔类型bool 使用时需要包含头文件 stdbool.h布尔类型只有两种情况真1 ture假0 false二、构造数据类型构造数据类型为用户自定类型包含构造体、共用体、枚举等