c语言运算符优先级问题

目录

1.1单(单目运算符)

1.2算(算术运算符)

1.3移(移位运算符)

1.4关(关系运算符)

1.5与(与运算符)

1.6异(异或运算符)

1.7或(或运算符)

1.8逻(逻辑运算符)

1.9条(条件运算符,三目运算符)

1.10.赋(赋值运算符)

1.11逗(逗号运算符)

技巧:单算移关与,异或逻条赋,逗号运算符(从左到右,运算符优先级递减)

1.1单(单目运算符)

++(自加1) --(自减1) &(取地址) *(取地址中的内容) +(正) -(负) !(取反) ~(按位取反)

1.2算(算术运算符)

+ - * / %

1.3移(移位运算符)

<< 左移运算(bit)

>> 右移运算(bit)

eg:

​ 1<<3 = 8 //左移相当于乘以2^n

​ 5<<3 = 5*2^3=40

​ 8>>3 =8 /2^3 = 1 //右移相当于除以2^n

​ 10>>3 = 0b1010 >> 3= 0b1 =1

1.4关(关系运算符)

> 大于

< 小于

== 等于(两个等号,一个等号是赋值)

!= 不等于

>= 大于等于

<= 小于等于

1.5与(与运算符)

​ & :按照bit位与,0和任何说相与都为0,1和任何数相与都为任何数

​ 0 & 0 = 0

​ 0 & 1 = 0

​ 1 & 1 = 1

eg1:

​ 5&10 = 0b0101 &0b1010 = 0

​ 7&23 = 0b0 0111 & 0b1 0111= 0b0 0111=7

1.6异(异或运算符)

​ ^ :按照bit位异或,相同位假,相异为真

​ 0 ^ 0 = 0

​ 0 ^ 1 = 1

​ 1 ^ 1 = 0

eg1:

​ 17 ^ 13 = 0b1 0001 ^ 0b0 1101 = 0b1 1100 = 28

1.7或(或运算符)

​ |:按照bit位或,1和任何说相或都为1,0和任何数相或都为任何数

​ 0 | 0 = 0

​ 0 | 1 = 1

​ 1 | 1 = 1

eg1:

​ 请将a的bit3位置位,不改变其他的bit位,使用或符号完成

​ int a;

​ a |= (1<<3);

eg2:

​ 5 | 10 = 15

问:如果一个int负数和unsigned int的数或运算之后是正数还是负数?

答:正数

1.8逻(逻辑运算符)

​ || 或

​ && 与

​ if(表达式1 || 表达式2)

​ 如果表达式1为真,表达式2不会参与运算,整个表达式的结果为真

​ 如果表达式1为假,表达式2会参与运算,如果表达式2为真,整个表达式为真,否则整个表达式为假

​ if(表达式1&& 表达式2)

​ 如果表达式1为假,表达式2不会参与运算,整个表达式的结果为假

​ 如果表达式1为真,表达式2会参与运算,如果表达式2为真,整个表达式为真,否则整个表达式为假

1.9条(条件运算符,三目运算符)

​ 表达式?表达式1:表达式2;

​ 如果表达式为真,执行表达式1,如果表达式为假,执行表达式2

1.10.赋(赋值运算符)

​ =

​ += //a+=b a=a+b

​ -=

​ *=

​ /=

​ %=

​ <<=

​ >>=

​ |=

​ ^=

​ &=

1.11逗(逗号运算符)

a=(表达式1,表达式2,表达式3)

整个表达式的结果就是表达式3的结果

eg1:

a=(3,4,5); //结果a=5

eg2:

a=(b+=c,c+=d,d+=8); //a的结果就是d+=8后的值,但是前两个表达式也会参与运算

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我只是个小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值