历史上的今天
返回首页

历史上的今天

今天是:2025年01月03日(星期五)

正在发生

2018年01月03日 | C51程序设计中的运算符应用

2018-01-03 来源:eefocus

优先级排列:

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求值


推荐阅读

史海拾趣

Dielectric Laboratories公司的发展小趣事

随着电子行业的不断发展,市场对电子元件的需求也在不断变化。为了适应这一变化,DLI不断调整产品战略,推出了更多符合市场需求的新产品。例如,针对商业和工业领域的需求,DLI研发了具有高性能、高可靠性特点的MLCC产品,并成功打开了市场。此外,公司还不断加大研发投入,探索新的技术领域,以保持其在行业中的领先地位。

ERP公司的发展小趣事

面对不断变化的市场环境和客户需求,电子智链始终保持创新和进取的精神。公司不断投入研发资源,推出新的ERP产品和解决方案,以满足客户日益增长的需求。同时,电子智链也积极应对来自国内外竞争对手的挑战,通过不断提高产品质量和服务水平来巩固自身的市场地位。在未来的发展中,电子智链将继续秉持“客户至上、创新驱动”的理念,致力于为电子企业提供更加先进、高效和可靠的ERP解决方案。

骅讯(Cmedia)公司的发展小趣事

骅讯(Cmedia)公司成立于1991年,起初是一家专注于音频芯片设计的公司。在成立初期,骅讯就凭借其PCI多通道芯片在市场上取得了初步的成功。这种芯片为电脑提供了更为丰富的音频体验,从而帮助骅讯在音频芯片设计领域崭露头角。

芯佰微(Corebai)公司的发展小趣事

芯佰微始终将品质管理作为公司的核心工作之一。公司建立了严格的质量管理体系,从原材料采购到产品生产、测试、包装等各个环节都进行严格的质量控制。同时,芯佰微也非常注重客户服务,始终将客户的需求放在首位,及时解决客户在使用过程中遇到的问题。这些措施使得芯佰微赢得了客户的广泛信任和好评。

FEMA Electronics Corporation公司的发展小趣事

随着科技的不断发展,FEMA意识到只有不断创新才能在竞争激烈的市场中立于不败之地。因此,公司加大了研发投入,不断推出具有自主知识产权的新产品。其中,一款高性能的集成电路芯片在市场上引起了广泛关注。这款芯片不仅性能卓越,而且具有极高的性价比,迅速赢得了客户的青睐。FEMA凭借这一产品,成功打开了新的市场领域,实现了业务的快速增长。

台湾义隆电子(ELAN)公司的发展小趣事

作为一家有社会责任感的企业,义隆电子一直关注可持续发展问题。公司积极推广绿色生产理念,采取环保措施减少生产过程中的污染排放。同时,义隆电子还关注社会公益事业,积极参与各种慈善活动,回馈社会。这些举措不仅提升了公司的品牌形象,也为公司的长期发展奠定了坚实基础。

请注意,以上故事框架仅供参考,具体的故事内容需要根据义隆电子的实际情况进行撰写。

问答坊 | AI 解惑

电子产品安全距离及其要求

所谓安全距离,就是为保护人在使用电子产品的时候,危险电压带电部分与人不能轻易接 触到,也不能让它来引起危险导致威胁人身安全。 因此必须在一般情况下,安全距离是在产品设计中最重要的部分之一。检查安全距离从设 计阶段开始。结构检查人员会 ...…

查看全部问答>

以7805为例 如何测量直流稳压器的最大输出电流

图中,7805的输入1脚接12V外加电源,3脚输出5V电压,这个用万用表的电压档一测就知道了,但是它的输出电流最大是多少呢? 答案是输出电流随负载的变化而变化,可是电流不能无限小和无限大吧?所以输出电流必定有个最小值和最大值。     ...…

查看全部问答>

高人请指点

#include #define uchar unsigned char uchar code  seg7[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar second ,minute,hour,count,m,num,num1,i,s,f; void delay() delay1s()         { ...…

查看全部问答>

我的VS2005怎么了?新建工程不行,打开工程不行(只限智能设备工程),报这样的错误"从用户数据存储中检索信息时出错。XML文档必须包含一个顶层元素".好怪!

我的VS2005怎么了?新建工程不行,打开工程不行(只限智能设备工程),报这样的错误\"从用户数据存储中检索信息时出错。XML文档必须包含一个顶层元素\".好怪!…

查看全部问答>

VISTA系统下安装 Tornado2.0后,运行时总出现 gdb error,是什么原因?

  运行Tornado时,总弹出好几个错误的对话框,标题为 gdb error!   内容为:Failed to register COM Server. Error code = ox8002801c   将对话框点掉之后 Tornado 就启动起来了,运行还算正常,但每次一启动就出 ...…

查看全部问答>

各位达人救救小弟则个

要求做一个动画控件。功能描述如下: 根据调用者的要求,决定图片显示的快慢,以及多少张图片循环显示以实现动画功能,同时根据图片要能自我缩放以匹配控件大小。控件大小由调用者决定! 有没有谁写过啊?各位达人救救我啊…

查看全部问答>

大学新生报名IT培训,职业规划从入学开始

本报讯: 日前,记者从国内著名的IT培训公司北大青鸟APTECH获悉,进入9月份以来,在一些城市出现了大量刚入学大学新生前来咨询职业培训,甚至已有人报名参加相关课程培训,在某些培训中心,这类刚入学大学新生在本阶段招生中已占到相当比例。IT职业 ...…

查看全部问答>

CS8900不能初始化,请高手指点一下

有谁做过TI的430以太网,就是easyweb那个解决方案,我的cs8900A始终不能初始化,在这个循环里跳不出来: do Write8900(ADD_PORT, PP_SelfST); // set register while (!(Read8900(DATA_PORT) & INIT_DONE)); // wait un ...…

查看全部问答>

短消息为什么没有提示音了?

RT?我觉得还是有提示音的好,这样一上线就能知道有消息了!~…

查看全部问答>

【MSP430共享】 MC430F224例程:Keys+LED演示

【例  程】://基于MC430F224开发板实验例程//软件:IAR Embedded Workbench Version: 3.42A//编写:微控设计网 www.Microcontrol.cn DC//目标板: MC430F224开发板 V1.0#include \"msp430x22x4.h\"//初级用户要习惯采用宏定义,以方便的编写 ...…

查看全部问答>