C 运算符优先级 |
您所在的位置:网站首页 › 逻辑运算符优先级顺序是什么 › C 运算符优先级 |
C 运算符优先级——位运算符和逻辑运算符
在进行C语言开发时,若单条表达式用到的运算符过多,需要注意运算符的优先级,否则无法得到欲得到的结果,最显而易见的便是“先算乘除,后算加减”。 说说我遇到的问题吧:在if中判断某一个字符&0x80后是否等于0,一开始我是这么写的: if (data & 0x80 == 0) { //code ... }结果发现明明字符data最高位为0,但依然无法进入if语句块,而单独输出data & 0x80时,其输出结果为0,于是猜想可能是&运算符的优先级低于==,将代码改为: if ((data & 0x80) == 0) { //code ... }结果便正常了,从而确定&运算符的优先级低于==,在一开始的代码中,会先计算0x80 == 0,得到值为0,而后计算data & 0,这样无论data为什么值,得到的结果都是0,最终也就是if(0),所以无法进入if语句块。 经网上查阅,整理C 运算符优先级表如下: 优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表达式*表达式%余数(取模)整型表达式/整型表达式4+加表达式+表达式左到右双目运算符-减表达式-表达式5表达式6>大于 表达式>表达式左到右双目运算符>=大于等于表达式>=表达式 赋值运算符。逻辑运算符中“逻辑非 !”除外,以及位运算符中"按位取反运算符 ~"除外。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |