操作符的分类
我们之前见过了很多的操作符,但是因为学的不深所以没有系统的讲解过
操作符分为哪些嘞
- 算数操作符
+ , - , * , % , /
- 位移操作符
>> , <<
- 位操作符
& | ^
- 赋值操作符
= , += , -= , *= , /= , %=, <<= ,>>= ,&=, |= , ^=
- 单目操作符
!, ++ , -- , & , * , - , + , ~ , sizeof , (类型)
- 关系操作符
> , >= , < , <= , == , !=
- 逻辑操作符
&& , ||
- 条件操作符
? , :
- 逗号表达式
,
- 下标引用
[ ]
- 函数调用
( )
- 结构成员访问
. 、- >
上述的操作符我们基本知道了算数操作符,赋值操作符,逻辑操作符 ,条件操作符和一部分单目操作符
而操作符中会有一些关于二进制的知识,建议补充知识后再来了解
移位操作符
左移操作符:<<
右移操作符:>>
此操作符的操作数必须是整数
左移操作符
移位规则:左边抛弃,右边补零
假如num=100001
如果num<<2
就是num=000100
右移操作符
移位规则:分两种
- 逻辑右移:左边填0,右边丢弃
- 算数右移:左边用原该值的符号位填充,右边丢弃
编译器基本上用的都是算数右移
对于移位操作符,不要一定负数位,这个标准是未定义的
位操作符
位操作符有:& | ^ ~
- &:按位与
- | :按位或
- ^ :按位异或
- ~:按位取反
&:按位与
只要对应的二个二进位都为1时,结果位就为1,否则为0
举个例子
int a = 10011;
int b = 10101;
a&b;
//那么就是
// 10011
// 10101
//结果就是 10001
| :按位或
只要对应的二个二进位有一个为1时,结果位就为1
举个例子
int a = 10011;
int b = 10101;
a|b;
//那么就是
// 10011
// 10101
//结果就是 10111
^ : 按位异或
进行异或运算时,当前位的两个二进制表示不同则为1相同则为0
举个例子
int a = 10011;
int b = 10101;
a|b;
//那么就是
// 10011
// 10101
//结果就是 10001
~ :按位取反
就是把操作数的每一位都取反
举个例子
int a = 10001
~a;
//这时a=011110
单目操作符
单目操作符中比较陌生的是& *
,我们在指针在讲他
逗号表达式
逗号表达式就是用逗号隔开多个表达式
逗号表达式,从左往右执行,整个表达示的结果是整个表达式的结果
举个例子
int a = 2;
int b = 3;
int c = (a+1,b+1,b+2)//c的数值是b+2的数值,为5
今天的知识讲解完啦,如果觉得有用可以点一下赞和关注,也可以先收藏以防需要时找不到哦,当然如果作者写的哪里有问题欢迎指出,我们一起进步!!!
祝看到这里的人天天开心哦(笔芯)