操作符
- 算术操作符
+, - , * , / , %
其中%的两个操作数必须为整数。
- 移位操作符
<< 左移操作符 , >> 右移操作符
左移相当于乘法(左移1位,乘2)
右移相当于除法(右移1位,除2)
右移运算分为逻辑移位(左边用0填充,右边丢弃)和算术移位(左边用符号位填充,右边丢弃)
- 位操作符
& 按位与
| 按位或
^ 按位异或
位操作符的操作数必须是整数。
- 赋值操作符
=
复合赋值符+=,-=,*=,/=,%=,>>=,<<=,&=,|=,^=
- 单目操作符
!,-,+,&,sizeof,~,–,++,*,(类型)
其中&有按位与的意思,也有取地址的意思。
sizeof以字节为单位,求变量所占空间的大小。
~为按位取反。
*是间接访问操作符(解引用操作符),表现为指针。
(类型)是强制类型转换。
sizeof和数组:
- sizeof(a++)中的a++在编译期间确定类型大小,不会参与运算,数组元素也不会去访问。
- arr在两种情况下代表整个数组:sizeof(arr)和&arr+1。
- 数组在哪里定义,就在那里求长度(sizeof)。
- 关系操作符
包括>,>=,<,<=,!=,==
在编程的过程中,为防止 = =和=不小心写错导致错误,可将if( a= =20)写成if(20==a)的形式。
- 逻辑操作符
&&
||
表达式1&&表达式2
(表达式1为假时,不执行表达式2)
表达式1||表达式2
(表达式1为真时,不执行表达式2)
- 条件操作符
exp1?exp2:exp3
- 逗号表达式
exp1,exp2,exp3,…expN
从左向右依次执行,整个表达式的结果是最后一个表达式的结果。
- 下标引用操作符
[ ]
操作数:一个数组名+一个索引值
- 函数调用操作符
( )
接受一个或多个操作数:第一个操作数是函数名,剩余的操作数是传递给函数的参数。
- 访问结构成员操作符
. 结构体,成员名
-> 结构体指针->成员名