版权声明:Zhining https://blog.csdn.net/weixin_43214609/article/details/83302404
操作符
指令系统的每一条指令都有一个操作符,它表示该指令应进行什么性质的操作。不同的指令用操作符这个字段的不同编码来表示,每一种编码代表一种指令。组成操作符字段的位数一般取决于计算机指令系统的规模。
C语言中的操作符有位操作符、算术操作符、赋值操作符等。
1. 位操作符
’<<’—左移位
把一个数的二进制位整体向左移动N个位。
例如:n=5<<2 把5的二进制向左移动两位
’>>’—右移位
把一个数的二进制位整体向右移动N个位。
- 分为算术右移和逻辑右移 ,算术右移是指整体向右移,给左边的空缺位补充符号位;逻辑右移是指整体向右移,给左边的空缺位补充0.(取决于编译器,一般多是算术右移)。
- 左移一位等同于于给原数字*2;右移一位相当于(不是等同于)给原数字/2;
(-1>>1=-1)
’&’’|’’^’—和、或、与
- 操作数必须为int型
- a^a=0;可以用来求取只出现一次的数。
- a&1;求的a的最后一位是否为1。
2. 算术操作符
’+’、’-’、’*’、’/’、’%’
-
上述操作符均是双目运算符,且除了‘%’(取模运算符)都可以操作int型和float型。3.0/4的结果是浮点型;3/4的结果是整形;
-
‘/’—取整运算符;’%’—取模运算符;n%10取得n的最后一位数字,n/10得到舍去最后一位后的数字,两个组合可以输出数字的每一位,另外%2、/2也可以输出一个数的二进制序列;
3. 赋值操作符
’+=’ ‘-=’ ‘*=’ ‘/=’ ‘^=’ ‘%=’ ‘|=’ ‘&=’ ‘sizeof’ ‘~’ ‘- -’ ‘++’ ‘!=’ ‘()’等
- ‘- -’ '++'需要注意前置和后置,影响结果。
- ‘~’—按位取反;可以把a的二进制第n位改为1 。
4. 关系操作符
‘&&’ ‘||’—和、或
-
注意区分&&和&,|和||;
-
使用时注意“短路”现象,口诀:&&为0则停,||为1则停;
5. 逗号表达式
exp1,exp2,…,expn
- 逗号运算符一定要从左到右依次运算,虽然以最后一个表达式为整个表达式的结果,但不要只计算最后一个表达式。
6.条件运算符
exp1?exp2:exp3;
- 相当于if语句的功能,exp1为真,则执行exp2,反之执行exp3 。
7. 特殊的操作符
[ ]—下标引用操作符
- 操作数为2个:下标数、数组名,arr[0]和0[arr]和arr[]0都是正确的。
‘·’、‘->’—访问结构成员
- 用于访问结构体变量的成员。
操作符优先级
- 表格来自于网络非原创
宁静致远