- 表达式是C语言的主体,在C语言中表达式由“操作符”与“操作数”两部分构成。而操作数可以是一个,也可以是多个。操作符则可划分为“算数操作符、位移操作符、位操作符、赋值操作符、复合赋值操作符、单目操作符、关系操作符、逻辑操作符、条件(三目)操作符、以及逗号、下标引用、函数调用和结构成员等。
- 一 、算数操作符:+、--、*、/、%
注意: ‘%’取模(余)操作符的两端操作数必须都是int型(整数)
- 二 、位移操作符:<<(左移)、>>(右移)
在学位移操作符时,必须简单了解数据的存储方式,如:整数在计算机中是以其补码存储的。
正整数的原码、反码、补码均相同;而负整数的反码是在其原码的基础上,符号位不变,其余各位按位取反,补码则是在反码的基础上加1.
1.<<(左移):丢弃高位,低位补零
例如:1和-1在内存中的分布(补码)
1: 00000000 00000000 00000000 00000001 -1: 11111111 11111111 11111111 11111111
00000000 00000000 00000000 00010000 11111111 11111111 11111111 11110000
2.>>(右移):正数:丢弃低位,高位补零
负数 : 1>:算术右移,丢弃低位,高位补壹
2>:逻辑右移,丢弃低位,高位补零
例如:1和-1在内存中的分布(补码)
1: 00000000 00000000 00000000 00000001 -1: 11111111 11111111 11111111 11111111
00000000 00000000 00000000 00000000 11111111 11111111 11111111 11111111
- 三、位操作符:&(按位与)、|(按位或)、^(按位异或)
1. &(按位与):只有当对应位都为‘1’时,按位与的结果才是‘1’;否则为‘0’。(清零效果)
2. |(按位或):对应位只要有‘1’时,按位或的结果就是‘1’;否则为‘0’。
3. ^(按位异或):对应位相同为‘0’;相异则为‘1’。(在不借助中间变量的情况下实现交换)
- 四、赋值操作符: =(注意:区分‘=’与‘==’)与复合赋值操作符:+=、-=、*=、/=、%=
此外还有:<<=、>>=、&=、|=、^=
- 五、单目操作符:!、-、+、&、sizeof、~、--、++、*、(类型)