操作符的分类
>算数操作符
>移位操作符
>位操作符
>赋值操作符
>单目操作符
>关系操作符
>逻辑操作符
>条件操作符
>逗号表达式
>下标引用、函数调用和结构成员
一、算术操作符
包括 + (加法), - (减法), * (乘法), / (除法), % (取余)。
这些都是较为简单的操作符,但需要注意的有以下几点:
1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2.对于/操作符,如果两个操作数都为整数,执行整数除法;而只要有浮点数执行浮点数除法。
3.%操作符的两个操作数必须为整数,返回的是整除之后的余数。
二、移位操作符
<< 左移操作符
>> 右移操作符
1.左移操作符(<<)
移位规则:左边抛弃、右边补0
注意:浮点数不能向左移动。左移操作有乘2的效果。
2.右移操作符(>>)
移位规则:
1.逻辑移位:左边用0填充,右边丢弃
2.算术移位:左边用原该值的符号位填充,右边丢弃
警告!
对于移位操作符,不要移动负数位,这个是标准未定义的。
三、位操作符
& 按位与 ———全为1则为1
| 按位或 ———有一个1就为1
^ 按位抑或 ———相同为0,相异位1
注意:1.它们的操作数必须是整数。
2.任何数按位与(&)1,若结果是1,则说明这个数最低位是1;若结果是0,则说明这个数最低位是0。
3.任何数按位抑或(^)它自己结果是0。
4.任何数按位抑或(^)0结果是它自己。
四、赋值操作符
赋值操作符(=)几乎是所有程序都会用到的操作符,较为简单,不多做说明。
下面了解复合赋值符
+= -= *= /= %=
>>= <<= &= |= ^=
例如:x = x + 1可写作x +=1,以此类推,其余的不做说明。
五、单目操作符
单目操作符包括:
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
简单讲讲取地址操作符、sizeof操作符、++和--操作符,其余的简单不做讲解。
1.&(取地址操作符)
打印地址以“%p”形式打印。
可以取变量地址,取数组地址,取函数地址。
注意:数组名相当于首元素的地址;函数名是个地址。
2.sizeof
首先提醒sizeof是操作符不是函数,很多不清楚操作符的大概都会认为这是个函数。谨记!
siaeof后跟类型时必须加括号;sizeof内的表达式不参与运算。
3.++和--
前置++和--:先++或--,后使用
后置++和--:先使用,后++或--
六、关系操作符
· >
· >=
· <
· <=
· != 用于测试“不相等”
· == 用于测试“相等”
警告!!!
在编程过程中不要把“==”和“=”写错,导致出错。
七、逻辑操作符
&& 逻辑与(有一方为0,则为假)
| | 逻辑或(有一方为真,则为真)
注意区分逻辑与和按位与,逻辑或和按位或!!!
1&2--------------->0 二进制与
1&&2------------->1 逻辑与
1|2-------------->3 二进制或
1||2------------->1 逻辑或
八、条件操作符
exp1 ? exp2 : exp3
这表示 若表达式1(exp1)成立,则执行表达式2(exp2),否则执行表达式3(exp3)。
九、逗号表达式
exp1,exp2,exp3,…expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
十、下标引用、函数调用和结构成员
1.[] 下标引用操作符
操作数:一个数组名 + 一个索引值
2.() 函数调用操作符
接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3.访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名