本章相对而言较为基础,故只收录不熟悉的内容。
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语言操作中,如果遇到无符号数与有符号数之间的操作,编译器会自动转化为无符号数来处理。
