C语言操作符
操作符分类
- 算术操作符
- 移位操作符
- 位操作符
- 赋值操作符
- 单目操作符
- 关系操作符
- 逻辑操作符
- 条件操作符
- 逗号表达式
- 下表引用、函数调用和结构成员
算数操作符
+ - * % /
1.除了%操作符之外,其他几个可以作用于整数和浮点数。
2.对于/操作符,如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3.%操作符的两个操作数必须为整数。返回的是整除之后的余数。
移位操作符
<< //左移操作符
>> //右移操作符
左移操作符的移位规则是:
左边抛弃,右边补0
右移操作符的移位规则是:
分两种
1.逻辑右移:左边用0填充,右边丢弃
2.算术右移:左边用元该值的符号位填充,右边丢失
警告:移位操作符不能移动负数位
位操作符
位操作符有:
& //按位与
| //按位或
^ //按位异或
操作数必须是整数
赋值操作符
= //赋值操作符
赋值操作符可以连续使用
并且能让你给之前不满意的值重新赋值
复合赋值符
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
复合赋值符是两个运算符复合的效果
例如:
int a=10;
a=a+10;
a+=10; //将上面的运算复合,更有效简洁
单目操作符
! //逻辑反操作
- //负值
+ //正值
& //取地址
sizeof //操作数的类型长度(以字节为单位)
~ //对一个数的二进制按位取反
-- //前置、后置--
++ //前置、后置++
* //间接访问操作符(解引用操作符)
(类型) //强制类型转换
关系操作符
>
>=
<
<=
!= //用于测试不相等
== //用于测试相等,字符串只能用strcmp来比较
注意 "=“和”= ="的差别
=是赋值符,==才是判断相等。
逻辑操作符
&& //逻辑与
|| //逻辑或
条件操作符
exp1 ? exp2 : exp3
例如:
max=(a>b)?a:b //判断a和b的大小,a>b,输出a,否则输出b
逗号表达式
exp1,exp2,exp3,…expN
逗号表达式,就是用逗号隔开的表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
下标引用、函数调用和结构成员
1.下标引用操作符
[] //下标引用操作符
操作数:一个数组名+一个索引值[]
例如:
int arr[10];//创建数组
arr[9]=10;//使用下标引用操作符
**[ ]的两个操作数是arr和9**
2.函数调用操作符
() //函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3.访问一个结构的成员
. //结构体.成员名
-> //结构体指针->成员名
操作符的属性:
- 操作符的优先级
- 操作符的结合性
- 是否控制求值顺序
两个相邻的操作符先执行哪个取决于他们的优先级。如果优先级相同,取决于操作符的结合性。