操作符分类

分类

在这里插入图片描述

算数逻辑操作符

+、 -、 *、 /、 %

  1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
  2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
  3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。

移位操作符

<< 左移操作符 >> 右移操作符

注:移位操作符的操作数只能是整数。

左移操作符

移位规则:
左边抛弃、右边补0

右移操作符

移位规则:
首先右移运算分两种:

  1. 逻辑移位:左边用0填充,右边丢弃
  2. 算术移位:左边用原该值的符号位填充,右边丢弃

注意:对于移位运算符,不要移动负数位,这个是标准未定义的。

位操作符

& //按位与
| //按位或
^ //按位异或
注:他们的操作数必须是整数。

& —— 0&0=0; 0&1=0; 1&0=0; 1&1=1;
| —— 0|0=0; 0|1=1; 1|0=1; 1|1=1;
^ —— 0^0=0; 0^1=1; 1^0=1; 1^1=0;

赋值操作符

= += -= *= /= &= ^= |= >>= <<=

可以重新赋值,也可以写成复合的效果

单目操作符

在这里插入图片描述

前置++(–):先++(–),在使用
例如:

#include<stdio.h>
int main()
{
	int a = 3;
	int b = 3;
	b = ++a;
	printf("%d,%d\n", a, b);
	return 0;
}

结果为:4,4
++a = 3+1 = 4; b = a = 4

后置++(–):先使用,在++(–)
例如:

#include<stdio.h>
int main()
{
	int a = 3;
	int b = 3;
	b = a++;
	printf("%d,%d\n", a, b);
	return 0;
}

结果为:4,3
b = a = 3; a++ = 4

关系操作符

=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”

注意书写,别因为马虎写错

逻辑操作符

&&——逻辑与运算符。如果两个操作数都非零,则条件为真。
||——逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。

逻辑与和按位与的区别
1&2----->0
1&&2---->1

逻辑或和安慰或的区别
1|2----->3
1||2---->1

条件操作符

exp1 ? exp2 : exp3
若exp1的值为非0(真),则条件表达式的值=exp2;若exp1的值为0(假),则条件表达式的值=exp3

逗号表达式

exp1, exp2, exp3, …expN

  • 逗号表达式,就是用逗号隔开的多个表达式。
  • 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

下标引用、函数调用和结构成员

[ ] 下标引用操作符
操作数:一个数组名 + 一个索引值

例如:
int arr[10];//创建数组
arr[9] = 10;//实用下标引用操作符。
[ ]的两个操作数是arr和9。

( ) 函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数

访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名

优先级和结合性

  • 同一优先级的运算符,次序由结合方向决定——算术运算符从左至右,赋值运算符从右至左
  • 条件运算符,赋值运算符和单目运算符的结合方向是从右向左;其他运算符都为从左向右。

例如:
*和 / 的结合方向为从左向右,所以3乘以5除以4的次序是先乘后除
-(负号不是减)和++的结合方向为从右向左,所以 - i ++ = -(i++)

  • 大致归纳各类优先级(由高到底开始排列)
  1. 下标引用、函数调用和结构成员
  2. 单目运算符
  3. 算术运算符(先乘除后加减)
  4. 关系运算符
  5. 逻辑运算符
  6. 条件运算符
  7. 赋值运算符
  8. 逗号运算符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值