C语言运算符优先级详解.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言运算符优先级详解

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。?   所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。?   具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而-及.是取结构成员。?   其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的?真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。?   接下来是算术运算符,*、/、%的优先级当然比+、-高了。?   移位运算符紧随其后。?   其次的关系运算符中,?=??=要比?==?!=高一个级别,不大好理解。?   所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~)?   逻辑位操作符的与比或高,而异或则在它们之间。?   跟在其后的比||高。?   接下来的是条件运算符,赋值运算符及逗号运算符。?   在C语言中,只有4个运算符规定了运算方向,它们是、|?|、条件运算符及赋值运算符。?   、|?|都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如?a?=?0??b;?运算符的左边位0,则右边表达式b就不再判断。?   在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。?   赋值表达式则规定先对右边的表达式求值,因此使?a?=?b?=?c?=?6;成为可能。初——单——算,关——逻,条——赋——逗 断句如上。怎么记忆呢? 我是这样记忆的:“”内表示运算符的简称。 “初”次“单”独找你“算”账,(因为你和关羽有仇) “关”羽带着兵巡“逻”(因为你躲了起来) 你跑到别处了,隐姓埋名,“挑”着“豆腐”卖。(当了卖豆腐的):豆腐——实际上是“赋”“逗” 2009-4-8 15:43 回复 我是这样记得:?一个自称黑的初学者连编程都不会还算什么黑客,把自己关起来反思吧,逻辑都没有条理,因为你不认真学!还找理由说因为天赋不够,真逗``[ 2008-1-30 19:22:00 | Author: 盛方单片机 ]   C语言运算符优先级顺口溜[转] 醋坛酸味灌 味落跳福豆 共44个运算符 醋-初等,4个: ( ) [ ] - 指向结构体成员 . 结构体成员 坛-单目,9个: ! ~ ++ -- -负号 (类型)?? *指针 取地址 sizeof长度 (结合方向:自右向左) 酸-算术,5个: * / % + -减 味-位移,2个: 灌-关系,6个: = = == 等于 != 不等于 味-位逻,3个: 按位与 ^ 按位异或 | 按位或 落-逻辑,2个: 逻辑与 || 逻辑或 跳-条件,1个,三目: ? :?????????????????????????????????????????????????????????????? (结合方向:自右向左) 福-赋值,11个: = += -= *= /= %= = = = ^= |=?????????????????????? (结合方向:自右向左) 豆-逗号,1个: , 结合方向自右向左的只有三类:赋值、单目和三目,其它的都是从左至右结合。 注意:自己今天写程序时候把关系运算符号和位逻辑的优先级弄反。尽量用括号,就不出问题。 如:if(P1OUTBIT0==0)P1OUT ^=BIT0;???????? //判断p1.0是否输出为0,是就翻转,即点亮LED. 这行程序是错误的。可两边加上括号,即if((P1OUTBIT0)==0),或是直接用:P1OUT|=BIT0; 具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而-及.是取结构成员。 其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。 接下来是算术运算符,*、/、%的优先级当然比+、-高了。 移位运算符紧随其后。 其次的关系运算符中, = =要比 == !=高一个级别,不大好理解。 所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~) 逻辑位操作符的与比或高,而异或则在它们之间。 跟在其后的比||高。 接下来的是条件运算符,赋值运算符及逗号运算符。 在C语言中,只有4个运算符规定了运算方向,它们是、| |、条件运算符及赋值运算符。 、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档