注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我心飞翔

我有一个梦想,……

 
 
 

日志

 
 
 
 

习语言/c语言 运算符优先级  

2009-03-10 15:35:17|  分类: 编程语言-习语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

习语言/c语言 运算符优先级列表如下,共有15个优先级:

   () [] -> . left to right

  ! ~ ++ -- + - * (type) sizeof right to left   【 * 号和 ++ 或 -- 连用时容易出错,要用括号括起来】

  * / % left to right

  + - left to right

  << >> left to right

  < <= > >= left to right

  == != left to right    

  & left to right    【注意:位运算比判断等与不等的逻辑运算优先级低,这里和通常思维不同,容易出错,可以将所有位运算括起来避免优先级出错。】

  ^ left to right

  | left to right

  && left to right

  || left to right

  ?: right to left

  = += -= *= /= %= &= ^= |= <<= >>= right to left

  , left to right

  优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

  所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。

  具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。

  其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

  接下来是算术运算符,*、/、%的优先级当然比+、-高了。

  移位运算符紧随其后。

  其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。

  所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~)

  逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。

  跟在其后的&&比||高。

  接下来的是条件运算符,赋值运算符及逗号运算符。

  在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。

  &&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。

  在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。

  赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能。

  评论这张
 
阅读(157)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017