C语言运算符优先级(最详细版而且有针对性优化)(个人整理了部分常用的,避免查的头晕,还附了一些相关解释等) 比如自增自减运算符的两种方式的区别

概念:

一、    C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具  。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。
二、     相同优先级运算符,从左至右依次运算。

注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。

如果非得算一下   i++优先级高于++i    后自增优先级高于前自增    因为右结合
合理使用优先级可以极大简化表达式。(平常做题感觉更多的是根据优先级做题。。。。)

三、   大概参考顺序:

初级运算符( )、[ ]、->、.  (一共四个)
高于  单目运算符  
高于  算数运算符(先乘除后加减)  
高于  关系运算符  
高于  逻辑运算符(不包括!   !是一个例外)  
高于  条件运算符  
高于  赋值运算符  
高于  逗号运算符。

位运算符的优先级比较分散。

四、         大概分类总结:

所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。

具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。

五 、       C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。

例如:
  a + b, c = b, c++
  逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。
  逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。

六、        &&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。

条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。

赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能。

七、   个人说一点吧   与其单独背口诀感觉并不如平时多看看   多练习使用一下,而且说实话,有的口诀的编排绝对能够让你头大,有的时候你可能连口诀都看不懂!!!!(你可以去试一下,绝对会崩溃,还不如不背口诀,个人感觉)

 

八、一些实例(后期看到比较好的会更新)

a=3*5,a*4    这个题目就是很好地反映了逗号运算符  答案就是a=15   但是这个表达式的值为60   因为他是一个右结合性的运算符
a=3*5,a*4,a+5    这道题可以自己试一下   a=15,最后这一个表达式的结果就是20   这个我自己跑过了确实是20

 

 

常用的运算符表格总结(减少了两个非专业学生基本用不到的,表格后有补充那两个)

 

运算符级别运算符解释运算符意义使用方法结合方式
1[]  数组下标  数组名[常量表达式]左到右
 ()圆括号(表达式)/函数名(形参表)左到右
2-负号运算符-表达式右到左   单目运算符
 ~按位取反运算符~表达式右到左   单目运算符
 ++自增运算符变量++   ++变量右到左   单目运算符
 --自减运算符变量--     --变量右到左   单目运算符
 *取值运算符或者说间接引用运算符*指针变量右到左   单目运算符
 &取地址运算符(scanf会用到还记得吧)&变量名右到左   单目运算符
 逻辑非(基本必考点)!表达式右到左   单目运算符
 (类型)强制类型转换(数据类型)表达式     比如b=(int)a;  右到左   单目运算符
 sizeof长度运算符

sizeof(表达式)

求变量长度的  基本用不太到   但考察变量长度会用到

右到左   单目运算符
3/表达式/表达式左到右   双目运算符
 *表达式*表达式左到右   双目运算符
 %求余运算符(取模)整形表达式1%整形表达式2 (一定注意整型)左到右    双目运算符
4+表达式+表达式左到右    双目运算符
 -表达式-表达式左到右    双目运算符
5<<按位左移

变量<<表达式

在输出的时候对数据处理会用到

左到右    移位运算
 >>按位右移变量>>表达式左到右    移位运算
6>大于表达式>表达式左到右     双目运算符
 >=大于等于表达式>=表达式左到右     双目运算符
 <小于表达式<表达式左到右     双目运算符
 <=小于等于表达式<=表达式左到右     双目运算符
7==等于表达式==表达式左到右     双目运算符
 !=不等于表达式!=表达式左到右     双目运算符
8&按位与表达式&表达式左到右     双目运算符
9^按位异或表达式^表达式左到右     双目运算符
10|按位或表达式|表达式左到右     双目运算符
11&&逻辑与表达式&&表达式左到右     双目运算符
12||逻辑或表达式||表达式左到右     双目运算符
13?:条件运算符

表达式1?表达式2: 表达式3

右到左     三目运算符
14=赋值运算符变量=表达式右到左     双目运算符
 /=除后赋值变量/=表达式右到左     双目运算符
 *=乘后赋值变量*=表达式右到左     双目运算符
 %=取模后赋值变量%=表达式右到左     双目运算符
 +=、-=加减后赋值变量+=表达式   变量-=表达式右到左     双目运算符
 <<=、>>=左移后赋值、右移后赋值变量<<=表达式、变量>>=表达式右到左     双目运算符
 &=、^=按位与后赋值、按位异或后赋值变量&=表达式、变量^=表达式右到左     双目运算符
 |=按位或后赋值变量|=表达式右到左     双目运算符
最低逗号运算符表达式,表达式,…左到右    顺序运算
1.
成员选择(对象)
对象.成员名
 
1
->
成员选择(指 针)
对象指针->成员名
 

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言运算符优先级和结合性是指在一个表达式中,运算符按照优先级和结合性的规则进行计算的顺序。 优先级运算符优先级指的是运算符在表达式中的优先级优先级高的运算符先计算。C语言中的运算符优先级从高到低依次为: 1. ():括号优先级最高,优先级最高的表达式先计算; 2. !、~、++、--:逻辑非、按位取反、自、自优先级较高; 3. *、/、%:乘、除、取模,优先级较高; 4. +、-:加、优先级较低; 5. <<、>>:左移、右移,优先级较低; 6. <、<=、>、>=:比较运算符优先级较低; 7. ==、!=:相等、不相等,优先级较低; 8. &:按位与,优先级较低; 9. ^:按位异或,优先级较低; 10. |:按位或,优先级较低; 11. &&:逻辑与,优先级最低; 12. ||:逻辑或,优先级最低。 结合性:结合性指的是运算符在表达式中的计算方向,包括左结合、右结合和不结合。C语言中的运算符结合性分为以下几种: 1. 左结合:优先级相同的运算符,按照从左到右的顺序进行计算。例如:a + b + c,先计算a + b,再计算结果与c相加; 2. 右结合:优先级相同的运算符,按照从右到左的顺序进行计算。例如:a = b = c,先计算c赋值给b,再将b赋值给a; 3. 不结合:优先级相同的运算符不能连续出现,必须使用括号明确优先级。例如:a = b + c * d,先计算c * d,再将结果与b相加,再将结果赋值给a。 在编写表达式时,需要注意运算符优先级和结合性的规则,以保证表达式的计算顺序正确。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值