当前位置:首页 > 单片机 > 单片机
[导读] 优先级排列:1.优先级最高的:并不是真正意义上的运算符 ()改变优先级的符号(括号)、GrouPINg operator [] 数组下标操作符 Array aCCess ()函数调用操作符 function access ->结构成员选择操作符

优先级排列:

1.优先级最高的:并不是真正意义上的运算符

()改变优先级的符号(括号)、GrouPINg operator

[] 数组下标操作符 Array aCCess

()函数调用操作符 function access

->结构成员选择操作符(我把它叫做“箭头”)member access from a pointer

. 点 member access from a object

2.单目运算符:优先级最高,结合性从右到左

!~(取反)logICal negation ,bitwise complement

++ --(自增自减)pre-increace ,pre-decrease

-(负号)+(正号) minus, plus

*(取指针)derefenrence &(取地址)

(type)(强制类型转换)sizeof(取占用内存大小)

3.算术运算符:

* / %(取模、求余)优先级高于 + -

multipication, division, modulus, addition, subtraction

4.按位运算符

<< >> 右移,左移 bitwise shift left/right

5.关系运算符

< <= > >= comparision less-than/ less-than-or-equal-to/ greater than/ greater-than-or-equal-to

优先级高于

== != comparision equal-to/ not-equal-to

6. 逻辑运算符:

按位逻辑运算符优先级高于其他逻辑运算符

每个逻辑运算符的优先级都不同:

& bitwise AND

^ bitwise exclusive OR

| bitwise inculsive(normal) OR

&& logical AND

| | logical OR

7. 三目运算符: 条件运算符Ternary conditional (if-then-else的简写)

?:结合性:从右向左

8. 赋值操作符 assignments及其复合运算符

= 结合性:从右向左

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

9. 优先级最低的:逗号运算符(顺序执行操作符 Sequential evaluation operator)

分割函数参数的逗号并非逗号运算符,声明里的变量列表之间的逗号也不是逗号运算符,只是起分割的作用。逗号运算符连接的是表达式。


需要注意的地方:

10. 使用括号能提高程序的易看性,降低程序的出错率。在不知道优先级的地方,尽量多使用括号。

11. 过多使用括号,是程序代码增加,简单和易用本就是一对矛盾。所以,尽可能多了解优先级知识。记忆规则是:

优先级最高的和优先级最低的要记牢;

单目运算符的优先级很高,仅次于部分符号。

算术运算符的优先级很高,但次于单目运算符;

移位运算符的优先级比算术运算符底,但是比关系运算符要高。

关系运算符中,==与!=优先级低于其他关系优先级;

所有的逻辑运算符的优先级都低于关系运算符。不同的逻辑运算符的优先级不同。

三目运算符的优先级很低,但是高于赋值运算符;

赋值操作符的优先级很低,仅高于逗号运算符。


12. 括号有时候带来的不一定是好事。比如g(x,y)与g((x,y)),函数参数的数量就是不同的。

13. 运算符的优先级与表达式的求值顺序

c语言只有四个运算符(&& || ?: ,)存在规定的求值顺序。

a && b 先对a求值,如果a为0(假),则继续对b求值;如果a为非0(真),则不对b求值;

a || b 先对a求值,如果a为0(假),则不对b求值;如果a为非0(真),则对b求值;

a ? b : c 先对a求值,根据a的值去求b或者c的值。也就是说b、c不同是被求值;

a,b 先对左侧操作数a求值,然后a的值被丢弃,最对右侧操作数b求值


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

写一篇关于“PLC程序设计方法与技巧”的文章3000字可能内容过多,我可以为您提供一个文章大纲,供您参考:

关键字: PLC 程序设计 自动化

微控制器单元(Microcontroller Unit,简称MCU)芯片是一种集成了中央处理器(CPU)、存储器和各种输入输出接口的微型计算机芯片。MCU芯片广泛应用于嵌入式系统领域,具有体积小、功耗低、成本低等特点。M...

关键字: MCU器件 程序设计

在编程和计算中,运算符优先级是解释和计算表达式的一个关键因素。本文旨在阐述运算符优先级的概念、规则及其在表达式中的应用,以帮助读者更好地理解和运用运算符优先级。

关键字: 表达式 运算符 编程

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。

关键字: matlab 程序设计 计算机视觉

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言...

关键字: C51语言 运算符

在单片机系统设计中,程序设计是重要的一环,它的质量直接影响到整个系统的功能。用汇编语言进行程序设计的过程和用高级语言设计程序有相似之处,其设计过程大致可以分为以下几个步骤:

关键字: 汇编语言 程序设计 单片机

摘 要:针对《计算机程序设计基础》教学中存在的具体问题,文中从教学内容、教学方法、教学模式等环节入手,在以“学生为主体,教师为主导”的教学理念指导下,整合优化教学内容,丰富教学资源,实践混合教学、分层教学等教学模式,广泛...

关键字: 程序设计 教学内容 教学模式 学科竞赛

摘 要:针对《计算机程序设计基础》教学中存在的问题,从教学内容、教学方法、教学模式等环节提出了一系列改革措施,利用多媒体技术开发了丰富的课程教学资源,满足学生在线学习的需要。从教学效果来看,这些改革措施充分激发了学生学习...

关键字: 程序设计 教学模式 教学改革 课程建设 分级教学

对,你没看错,本文就是教你怎么写出让同事无法维护的代码。 原文:http://mindprod.com/jgloss/unmain.html 译者:陈皓 (@左耳朵耗子) 译文:http:...

关键字: 代码 程序命名 程序设计

有这样一位年轻人。 他获得过百度之星程序设计大赛冠军、谷歌编程挑战赛第三名。

关键字: 编程 李开复 程序设计
关闭
关闭