目录
九、打印short、long、long long 和 unsigned类型
最初K&R给出的关键字 | C90标准添加的关键字 |
int 基本整数类型 | signed 提供基本整数类型的变式 |
long 提供基本整数类型的变式 | |
short 提供基本整数类型的变式 | |
unsigned 提供基本整数类型的变式 | |
char 指定字母和其它字符 表示较小的整数 | |
float 表示带小数点的数 | |
double 表示带小数点的数 | |
额外笔记:long double 表示带小数点的数 |
一、整数
1、定义:不含小数点和指数的数
2、存储方式:以二进制数字储存整数
- 如整数7在计算机中以00000111的形式储存
二、浮点数
1、定义:有小数点的数
2、存储方式:
- 分成小数部分和指数部分来表示,且分开储存这两部分
- 计算机在内部使用二进制和2的幂进行储存
三、整数和浮点数的区别
整数 | 浮点数 |
---|---|
没有小数部分 | 有小数部分 |
表示的范围比整数大 | |
对于一些算术运算,浮点数损失的精度更多 | |
通常只是实际值的近似值 | |
浮点运算比整数运算慢 |
四、int类型:有符号整型
1、值:正整数、负整数或零
2、取值范围
- 一般而言,储存一个int值要占用一个机器字长
- C语言规定int类型不小于16位
- ISO C规定:-32768 ~ 32767 (-215 ~ 215-1)
3、声明int变量
- 单独声明:int 变量名;
- 多条声明:int 变量名, 变量名, …, 变量名;
- 作用:为变量创建和标记存储空间,并为其指定初始值
4、变量获得值的方法
- 赋值
- 通过函数获得
- 初始化(initialize)变量:为变量赋一个初始值
- 数据类型 变量名 = 值;
- 最好不要把初始化的变量和未初始化的变量放在同一条声明中
5、打印int值
- 可使用printf()函数
- 转换说明符 %d:指明了在一行中打印整数的位置
- 要确保转换说明的数量与待打印值的数量相同
6、显示八进制和十六进制
显示前缀 | ||||
以十进制显示数字 | %d | |||
以八进制显示数字 | %o | 0:%#o | ||
以十六进制显示数字 | %x / %X | 0x:%#x | 0X:%#X | 大写A-F 小写a-f |
五、其他整数类型
short int short | 占用的存储空间可能比int类型少 C语言规定至少占16位 | 常用于较小的数值的场合以节省空间 | 有符号类型 |
long int long | 占用的存储空间可能比int类型多 C语言规定至少占32位 | 适用于较大数值的场合 | 有符号类型 |
long long int long long | 占用的存储空间可能比long类型多 C语言规定至少占64位 | 适用于更大数值的场合 | 有符号类型 |
unsigned int unsigned | 只用于非负值的场合 可以表示更大的数 | 无符号类型 | |
signed | 强调使用有符号类型的意图 | 如short == short int == signed short == signed short int |
C90标准:unsigned long int、unsigned long、unsigned short int、unsigned short
C99标准:unsigned long long int、unsigned long long
六、使用多种整数类型
1、原因:
- C规定short占用的存储空间不能多于int,long占用的存储空间不能少于int
- 为了适应不同的机器
- 个人计算机最常见的设置:long long 64位、long 32位、short 16位、int 16位或32位
2、如何选择类型?
- 考虑unsigned类型,常用于计数
- 如果一个数超出了int类型的取值范围,且在long类型的取值范围内,使用long类型
- long占用的空间比int大的系统,使用long类型会减慢运算速度,非必要不使用long
- long类型占用空间 = int类型占用空间,确实需要32位整数时,使用long类型,以便把程序移植到16位机后仍可以正常使用
- 若在int设置为32位的系统中要使用16位的值,应使用short类型以节省存储空间
- 通常,只有当程序使用相对于系统可用内存较大的整型数组时,才需要重点考虑节省空间的问题
- 某些组件的硬件寄存器为16位
七、long 常量和 long long常量
1、存储空间大小:从小到大
int < long < unsigned long < long long / unsigned long long
2、八进制和十六进制常量
int < unsigned int < long < unsigned long < long long < unsigned long long
3、有时候要用long类型储存一个小数字,在值的末尾加上后缀l / L
- ll / LL后缀:表示long long类型
- u / U后缀:表示unsigned long long
八、整数溢出
九、打印short、long、long long 和 unsigned类型
%(h/l/ )(d/o/x/X/u)
转换说明 | 显示类型 | |
%u | unsigned int 类型 | |
%hd | 以十进制格式打印short类型 | |
%ho | 以八进制格式打印short类型 | |
%ld | long 类型 | 如果int和long大小相同,用%d即可 但被移植到其它系统中可能会无法正常工作 |
%lo | 以八进制格式打印long类型 | |
%lx %lX | 以十六进制格式打印long类型 | |
%lu | unsigned long 类型 | |
%lld | 有符号long long类型 | |
%llu | 无符号long long 类型 |
- C允许使用大写或小写的常量后缀,但是在转换说明符中只能使用小写
- h修饰符的作用:显示较大整数被截断成short类型值的情况