vlambda博客
学习文章列表

c语言运算符的优先级

运算符的优先级&结合性

当c语言出现表达式时,表达式的运算结果就会和运算符的优先级有关,优先级高的先运算。优先级相同时,根据运算符的结合性,左结合的运算符先算左边,右结合的运算符先算右边。

对于优先级:算术运算符、关系运算符、逻辑运算符、赋值运算符。逻辑运算符中“逻辑非”除外。

例如:

c语言运算符的优先级

算术运算符(+、-、*、/)

c语言运算符的优先级
c语言运算符的优先级
c语言运算符的优先级
c语言运算符的优先级

c语言运算符的优先级

对于表达式a+b*c,优先级和数字规则一样,先乘除后加减。

c语言中的加减乘除运算和数学中的运算规则基本相似,但有两点需要强调:

两个整数相除结果仍为整数,即只取商的整数部分,不取小数部分。

%是取两整数相除后余数的运算符。

注意:&只适用于整数运算

如:

c语言运算符的优先级

c语言运算符的优先级
c语言运算符的优先级
运行结果
c语言运算符的优先级

c语言运算符的优先级

c语言运算符的优先级

而对于表达式a\b*c,除法和乘法的优先级是相同的,这个时候到底应该先执行哪一个呢?

这是根据优先级的结合性来判定的。/和*的优先级相同,又都具有左结合性,所以向执行左边的除法,在执行右边的乘法。

c语言运算符的优先级

c语言运算符的优先级

自加自减运算符(++、--)

c语言运算符的优先级

需要重点说明当然是,++在变量前面和后面是有区别的:

++在前面叫做前自增(例如++a)。前自增先进行自增运算,再进行其他操作;

++在后面叫做后自增(例如a++)。后自增先进行其他操作,在进行自增运算;

自减(--)也一样,有前自减和后自减之分。

例如:

c语言运算符的优先级

c语言运算符的优先级

c语言运算符的优先级

c语言运算符的优先级

运算结果


c语言运算符的优先级

a,b,c,d的输出结果相信大家没有疑问,下面重点说a1,b1,c1,d1:

1)对于a1=++a,先执行++a,结果为11,在将11赋值给a1,所以a1的最终值为11.而a经过自增,最终的值也为11。

2)对于b1=b++。b的值并不会立马加1,而是先把b的原来值交给b1,然后再加1.b原来值为20,所以b1的值也就为20.而b经过自增,最终值为21。

自减(--)也是如此。

如:

c语言运算符的优先级

c语言运算符的优先级
c语言运算符的优先级
c语言运算符的优先级
c语言运算符的优先级


我们来看一下:

1)执行语句①时,因为是后自减,先进行a-b运算,结果是11,然后b在自减,就变成了0;最后再将a-b的结果(也就是11)交给c,所以c的值是11.

2)执行语句②之前,b的值已经变成0,。对于d=(++a)-(--b),a会先自增,变成13,然后b再自减,变成-1,最后在计算13-(-1),结果是14,交给d,所以最终是14。

END

品尝美食

编辑||朱娜荣

审核||杨文宁