打印
[应用方案]

C语言运算符优先级和口诀

[复制链接]
1763|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rosemoore|  楼主 | 2024-2-19 13:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一共有十五个优先级:

1   ()  []  .  ->

2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof

3   * / %

4   + -

5   >> <<  

6   > >= < <=

7   == !=   

8   &  

9   ^   

10  |   

11  &&

12  ||

13  ?:

14   =  +=  -=  *=  /=   %=  |=   ^=   &=   >>=   <<=

15  ,

结合性:2   13  14  是  右结合(从右至左)   其他都是  左结合(从左至右)

括号成员第一     // 括号运算符[]() 成员运算符.  ->

全体单目第二     // 所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&

乘除余三加减四    // 这个"余"是指取余运算即%

移位五,关系六    // 移位运算符:<< >> ,关系:> < >= <= 等

等于 不等排第七   // 即== 和!=

位与异或和位或    // 这几个都是位运算: 位与(&)异或(^)位或(|)   

三分天下**十

逻辑与跟或     // 逻辑运算符:|| 和 &&

十一跟十二     // 注意顺序:优先级(&&)  高于 优先级(||)

条件高于赋值      // 三目运算符优先级排到13 位只比赋值运算符和","高

逗号运算级最低  // 逗号运算符优先级最低

使用特权

评论回复
沙发
jackcat| | 2024-3-4 13:48 | 只看该作者
C语言中运算符的优先级共分为15级,从高到低如下:

圆括号【()】、下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】。
逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++】【 --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*】【&】、长度运算符【sizeof】。
乘法运算符【*】、除法运算符【/】、取余运算符【%】。
加法运算符【+】、减法运算符【-】。
左移动运算符【<<】、右移动运算符【>>】。
关系运算符【< 】【>】【<=】【 >= 】。
等于运算符【==】、不等于运算符【!=】。
按位与运算符【&】。
按位异或运算符【^】。
按位或运算符【|】。
逻辑与运算符【&&】。
逻辑或运算符【||】。
条件运算符【?:】。
赋值运算符【=】及其扩展赋值运算符【+=】【-=】【*=】【/=】【%=】【<<=】【>>=】【&=】【^=】【|=】。
逗号运算符【,】。

使用特权

评论回复
板凳
uptown| | 2024-3-5 19:57 | 只看该作者
即使在同一优先级层级上的运算符,它们会遵循其自身的结合性规则,大多数二元运算符都是从左到右结合,而一元运算符通常是右结合的(除了++和--)。若要改变默认的运算顺序,可使用圆括号来明确优先级。

使用特权

评论回复
地板
kkzz| | 2024-3-7 11:23 | 只看该作者
为了避免混淆,建议在需要时使用圆括号来明确运算顺序,即使这意味着代码看起来稍微冗长一些。同时,良好的编码习惯也包括了对运算符优先级的熟练掌握,这有助于提高代码的可读性和可维护性。

使用特权

评论回复
5
averyleigh| | 2024-3-12 17:36 | 只看该作者
除了单目运算符、条件运算符、赋值运算符是从右至左结合的,其它都是从左至右结合。在表达式中,优先级较高的先于优先级较低的进行运算。

使用特权

评论回复
6
lihuami| | 2024-3-15 19:14 | 只看该作者
在表达式中,具有较高优先级的运算符会优先计算。如果多个运算符具有相同的优先级,则按照从左到右的顺序进行计算。可以使用括号()来改变运算符的优先级和计算顺序。

使用特权

评论回复
7
i1mcu| | 2024-3-15 22:53 | 只看该作者
加法运算(+)和减法运算(-)都是左结合性的,所以在表达式a + b - c中,首先执行的是a + b,然后结果再与c进行减法运算。赋值运算符(=)是右结合性的,所以在表达式x = y = z中,首先给z赋值,然后将其值赋予y,最后将y的值赋予x。

使用特权

评论回复
8
gygp| | 2024-3-16 19:55 | 只看该作者
当两个运算符拥有相同的优先级时,就需要考虑它们的结合性。C语言的运算符结合性分为两种:左结合性和右结合性。左结合性意味着从表达式的左边开始,自左向右依次进行运算;而右结合性则是从表达式的右边开始,自右向左依次进行运算。

使用特权

评论回复
9
adolphcocker| | 2024-3-16 22:05 | 只看该作者
了解运算符的优先级可以帮助你写出更清晰、更有效的代码,并避免因误用运算符导致的编译错误或运行时错误。

使用特权

评论回复
10
alvpeg| | 2024-3-23 15:06 | 只看该作者
如果需要改变运算符的计算顺序,可以使用圆括号来确保计算结果符合预期。

使用特权

评论回复
11
zerorobert| | 2024-3-23 17:04 | 只看该作者
理解C语言中运算符的优先级和结合性对于编写出正确高效的代码是非常重要的。

使用特权

评论回复
12
hudi008| | 2024-3-24 13:38 | 只看该作者
C语言中的运算符优先级决定了在表达式中哪些运算将会首先执行。在C语言中,运算符的优先级共分为15级,其中1级最高,15级最低。例如,乘除运算(*、/)的优先级高于加减运算(+、-),所以在一个包含这些运算的表达式中,乘除将会首先执行。

使用特权

评论回复
13
jackcat| | 2024-3-27 10:44 | 只看该作者
为了避免混淆和不明确的运算符连写,建议在编写C语言代码时遵循一定的规则,比如使用括号明确表达式的计算顺序。例如,在表达式a + b * c中,如果不使用括号,那么b和c将会先进行乘法运算,再将结果加到a上。但是,如果我们写成a + (b * c),那么乘法将会在加法之前执行。

使用特权

评论回复
14
jimmhu| | 2024-3-27 16:37 | 只看该作者
在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

1363

帖子

2

粉丝