#转#C语言运算符优先级(超详细)

本文详细列举了C语言中各类运算符的优先级及其使用形式,包括单目、双目运算符及三目运算符等,并给出了各运算符的结合方向。阅读本文将帮助你更好地理解和掌握C语言中的运算符优先级规则。

转自博客:https://blog.youkuaiyun.com/huangblog/article/details/8271791

    每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!得意


C语言运算符优先级

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

()

圆括号

(表达式)/函数名(形参表)

.

成员选择(对象)

对象.成员名

->

成员选择(指针)

对象指针->成员名

 

2

-

负号运算符

-表达式

右到左

单目运算符

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

自减运算符

–变量名/变量名–

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

sizeof

长度运算符

sizeof(表达式)

 

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

 

6

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

 

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

 

13

?:

条件运算符

表达式1?

表达式2: 表达式3

右到左

三目运算符

 

14

=

赋值运算符

变量=表达式

右到左

/=

除后赋值

变量/=表达式

*=

乘后赋值

变量*=表达式

%=

取模后赋值

变量%=表达式

+=

加后赋值

变量+=表达式

-=

减后赋值

变量-=表达式

<<=

左移后赋值

变量<<=表达式

>>=

右移后赋值

变量>>=表达式

&=

按位与后赋值

变量&=表达式

^=

按位异或后赋值

变量^=表达式

|=

按位或后赋值

变量|=表达式

 

15

逗号运算符

表达式,表达式,…

左到右

说明:

    同一优先级的运算符,运算次序由结合方向所决定。
    简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符


 

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
### C语言运算符优先级表格 在C语言中,不同类型的运算符具有不同的优先级,这决定了表达式中操作数的组合方式。了解这些优先级有助于编写更清晰和无误的代码[^1]。 #### 关系运算符 关系运算符属于第六级别的优先级,在此级别上的具体运算符包括大于(`>`), 大于等于(`>=`), 小于(`<`), 和小于等于(`<=`)。这类运算符用于比较两个数值并返回布尔值作为结果[^2]。 #### 算术运算符 乘法(`*`), 除法(`/`), 取模(`%`)拥有较高的优先级(第三级),而加法(`+`), 减法(`-`)则位于较低的位置(第四级)。这意味着在一个混合了多种算术运算的操作里,前者会先被执行。 为了更好地理解这一点,可以考虑下面的例子: ```c #include <stdio.h> int main() { int a = 1, b = 2, c = 3, d = 4; int result = a + b * c / d; // 此处b*c首先被计算得到6, // 接着6/d执行获得商1, // 最终a加上这个商值得到最终的结果2. printf("The result is %d\n", result); return 0; } ``` 上述程序展示了如何依据运算符优先级来解析复杂的表达式。 #### 完整的运算符优先级列表 (部分) | 序号 | 类型 | 符号 | |------|--------------|----------------------------| | 1 | 后缀自增/减 | `++ --` | | ... | | | | 5 | 单目 | `& * + - ! ~ ++ -- (type)` | | 6 | 多目-算术 | `* / %` | | 7 | 加减 | `+ -` | | 8 | 移位 | `<< >> >>>` | | 9 | 关系 | `< > <= >= instanceof` | | ... | | | 注意:上表仅展示了一部分内容,完整的C语言运算符优先级表更为详尽,涵盖了更多种类的运算符及其相对位置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值