本章相对而言较为基础,故只收录不熟悉的内容。
1 整型数据
1.1 整型变量
整型变量的基本类型符是 int
。在 int
的前面可以增加两类修饰符:
- 控制变量是否有符号:
signed(有符号)
和unsigned(无符号)
。如无声明,默认为signed(有符号)
。 - 控制变量的值域范围:
short
和long
。可直接使用,省略int
。 注意,当使用
unsigned
修饰时,变量所对应的内存表示形式的最高位不是符号位,而是数据位,参与数值计算,因此当为非负数。1.2 整型常量
[-32768,32767],C语言认为它是
int
型常量。[-2147483648,2147483647],C语言认为它是long
型常量。- 整型常量后加字母
l或L
,认为它是long int
型常量。 无符号数可用后缀表示,整型常数的无符号数的后缀为
U或u
。2 实型数据
2.1 实型常量
实型也称浮点型,故实型常量也称实数或浮点数。在C语言中,实数只采用十进制。它有两种形式:
十进制小数形式:如0.0,5.789,-267.830等。
十进制指数形式:一般形式为
a E n
。a为十进制数,n为十进制整数,其含义为a x 10``n
。2.2 实型变量
实型变量有三类:单精度实型(float)、双精度实型(double)和长双精度实型(long double)。
long float
实际上就是double
,因此没有long float
类型。- 所有的实型常量按照
double
类型处理。 | 类型 | 精确表示的数字个数 | | —- | —- | | float | 7~8 | | double | 16~17 | | long double | 17~18 |
运行结果: a=123.456787,b=123.456787,c=123.456789
3 运算符
3.1 自增自减运算符
例:int p, i=2;
p=++i+(++i);
执行后: p=8, i=4
Tip:自增自减优先于+,所以相当于i先自增两次变成4,p=4+4=8。
将上式改为下列写法后,
p=++i+++i;
错误p=++i+ ++i;
正确p=++i-++i;
正确p=++i+--i;
正确
3.2 移位运算符
3.2.1 左移运算(<<)
a<<b
,将a所对应的二进制数左移b位。溢出的最高位被丢掉,空出的低位用0填补。如 int a=3; a<<2;
,表达式的值为12。
右移运算(>>)同理。
- 移位运算符两边必须都是整型数,否则非法。
3.3 sizeof运算符、复合赋值运算符
3.3.1 sizeof
C语言中提供了一个能获取变量和数据类型所占内存大小(字节数)的运算符,其使用格式为:sizeof 表达式
或 sizeof (数据类型名或表达式)
3.4 运算符的优先级
优先级 | 运算符 |
---|---|
高 低 |
() |
~、++、—、-、sizeof | |
*、/、% | |
+、- | |
<<、>> | |
& | |
^ | |
| | |
=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|= | |
, |
在C语言操作中,如果遇到无符号数与有符号数之间的操作,编译器会自动转化为无符号数来处理。