可恶的C语言——基本类型
一、整数类型
1. 有符号型
正整数或零:符号位(最左边的位)为0。
负数:符号位为1。
2. 无符号型:不带符号位的数
C语言中,默认整数变量均为有符号位,若无符号位,则需声明为unsigned类型。
3. 说明符
long 长类型 short 短类型 signed类型 unsigned类型 int类型
4. 六种说明符组合
(1)short int (2)unsigned short int (3)int
(4)unsigned int (5)long int (6) unsigned long int
5. C99整数类型
分为标准有符号类型与标准无符号类型,且增加了long long int与unsigned long long int
6. 整数常量
在程序中以文本形式出现的数,而非读、写或计算得出的数,可用十进制、八进制、十六进制表示。
若需编译器将常量作为长整数处理,只需在整数后边加L或1。
为指明为无符号常量,可在常量后边加上字母u或U。
L与u可结合使用。
7. 进制
(1)八进制:含0~7,且必须以0开头。
(2)十进制:含0~9,且不可以以0开头。
(3)十六进制:含09与af(10~15),必须以0x开头。
8.C99中的整数常量
C99中以LL或11结尾的整数常量为long long int。
在LL或11前或后加U的为unsigned long long int。
9. 补充
%d只适用于int类型。
读无符号整数时,使用字母u(十进制)、o(八进制)、x(十六进制)代替d。
读短整数时,在d、o、u或x前加上字母h。
读长整数时,在d、o、u或x前加上字母l。
读长长整数时,在d、o、u或x前加上字母ll。
二、 浮点类型
1. 三种浮点类型
(1)float:单精度浮点数
(2)double:双精度浮点数
(3)long double :扩展精度浮点数
2. C99中的浮点类型
分为实浮点类型与复数类型。
3.浮点常量
浮点常量必须包含小数点或指数。指数指明了对前面的数进行缩放所需的10的幂次。若有指数,需要在指数数值前放置字母E或e,可选符号+或-出现在e或E的后边。默认情况下以双精度数的形式储存。C99中十六进制浮点常量以0x或0X开头。
4.读/写浮点数
(1)单精度浮点数:%e、%f、%g
(2)双精度浮点数:在e、f、g前放置字母l(只能在scanf函数格式中使用l,在printf函数格式中可用e、f、g)
(3)long double类型:在e、f、g前放置字母L
整数类型与浮点类型统称为浮点类型。
三、字符类型(char类型)
char类型的变量可以用任意单字符赋值,且字符常量需要用单引号括起来。‘
char类型分为有符号型(范围为-128127)与无符号型(范围为0255)。
四、 转义序列
分为字符转义序列与数字转义序列。
字符转义序列
名称 | 转义序列 |
---|---|
警报(响铃)符\ | \a |
回退符 | \b |
换页符 | \f |
换行符 | \n |
回车符 | \r |
水平制表符 | \t |
垂直制表符 | \v |
反斜杆 | \ \ |
单引号 | ’ |
双引号 | " |
五、类型转换
分为隐式转换(编译器可以自动处理而无需程序员介入)与显示转换(允许程序员使用强制运算符执行)。
算术转换的规则
(1)任一操作数的类型是浮点数的情况:
float—>double—>long double
(2)两个操作数的类型都不是浮点类型的情况:
int—>unsigned int—>long int—>unsigned long int
特殊情况:若一个操作数的类型为long int,而另一个的类型是unsigned int,那么两个操作数都会转换成unsigned long int。
六、补充
强制类型表达式:(类型名)表达式
sizeof表达式:sizeof(类型名)可允许程序储存指定类型值所需空间大小。
类型名 | 占字节数 |
---|---|
int | 4 |
short | 2 |
long | 4 |
unsigned int | 4 |
unsigned short | 2 |
unsigned long | 4 |
float | 4 |
double | 8 |