c运算符优先级总结-你不得不搞明白的问题

     学习c语言,运算符算是c语言的一个基础知识,运算符的两个特征就是重点的重点了,其一就  c  最重要的是运算符优先级,其二就是结合性,这两个特征也算是笔试的基础题目。

      c语言的优先级有很多级,我觉得可以先把运算符分成两大类,一类是单目运算,一类是双目运算(其中包含一个三目运算)。

     

一、单目运算:顾名思义,就是运算只需要一个变量,如c++,*c等(c表示变量名)。

结论1. 单目运算的优先级比双目(包括三目)运算优先级高

    在c的运算符中,所有单目运算的优先级都高于双目运算

    但是单目运算还分左单目(如++i)和右单目(如i++)。

    双目运算 a+b,a>b,a&b ,a=b 等等类似的,即运算符两边都有操作数的。(注意:结构体运算符.和->除外

结论2.单目运算符中:右边的单目运算高于左边的单目运算。

     右单目有如下运算:函数(),数组[],结构体成员 .,结构体指针成员->(记得把结构体的运算符看成单目运算,这两个比较特殊),后++,后--

     左单目有如下运算:逻辑!,按位反~,正值+,负值-,前++,前--,间接访问*,区地址&,sizeof,类型强制转换()。

     比如*p++  ;  这个要先运行右++(但是右++并不立即生效),然后*号运算

     比如++a[0]  ;  []运算先计算,取出数组的值,然后++,改变了数组0元素的内容。

     比如--p->x;     结构体指针先运算,然后--

     比如 & p.key    这是取结构体成员key的地址,.运算先运算

    比如 p.key++   先取出key的值,然后++。注意优先级

结论3.优先级最高的是改变优先级的().(如 定义指针数组 char(*arr)[])

     小括号有3种格式,函数(),类型强制转换(),改变优先级()。

      改变优先级的最高,函数其次,类型转换最后。 

   单目运算就包括以上三种结论,以下讨论双目运算

二、双目运算的优先级也不难。

结论4. 算术运算最高,逗号最低,赋值倒数第二

     算术包括+,-,* ,/,%  这几个运算符的优先级跟你小学的知识一样,先乘除后加减

结论5.四字短语:算移比位

 算表示算术运算,上面提到的结论4.

移表示移位运算(c语言只有左移和右移),注意:c语言右移其实包括逻辑右移(有符号数)和算术右移(无符号数)。

位表示位运算(位与,位或,位异或)

 比较运算(大于,小于,等于,不等于)

结论6.四字短语:逻条等逗

     逻辑运算(逻辑与和逻辑或),注意:逻辑 ! 是单目运算符,优先级比较高,不包括在这。

     条件运算符:即三目运算(唯一的三目运算)

     等表示赋值运算(=,+=,*=等)

     逗号运算(,)

4字短语可能不太好记,不押韵,也不是什么短语。多看几眼,有事没事记记可能就好了。

      以上是我自己总结的运算优先级的规则,基本记住加理解还是很容易就记住的。至少我在工作学习中都是这么记忆的,希望能够帮助到大家。

    

7. 还要考虑运算符的结合性:

7.1  只有3类运算符是从右到左,其他都是从左到右。

a.单目运算的左单目运算符。

b.三目运算

c.赋值运算,有等号的都是的。

最近我也在准备自己的微信公众号

大智工作室友情提供帮助。也可以扫描以下二维码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大智兄

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

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

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

打赏作者

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

抵扣说明:

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

余额充值