首页 > 编程知识 正文

c语言三种逻辑运算符,指针运算符和++优先级

时间:2023-05-04 11:09:19 阅读:152691 作者:2681

对于C运算符的优先级——位和逻辑运算符,如果在c语言开发过程中用于一个表达式的运算符过多,则需要注意运算符的优先级。 不这样做的话,就得不到想得到的结果。 最明显的是“先计算乘除运算,后计算加减运算”。

谈谈我面临的问题吧。 判断作为if的字符在变为0x80后是否变为0。 一开始是这样写的:

if(data0x80==0) (/code . )的结果显示,虽然字符data的最高位为0,但依然无法访问if语句块,单独输出data0x80时,其输出结果为0。 因此,我们认为运算符的优先级低于==,并按如下方式修改代码:

if () data0x80 )==0) ) /代码. )的结果将正常,并确保运算符的优先级低于==。 在第一个代码中,首先计算0x80==0,值为0,然后计算data0。 这样,无论data为什么计算值,结果都为0,最终为0

我在网上查了一下,整理了C运算符的优先顺序表如下。

优先级运算符名称或语义使用格式方向说明1[]数组下标数组名称[常量表达式]从左到右(圆括号) /函数名称)形参数)、成员选择)对象)、成员选择)指针)对象指针(mema 类型转换)数据类型变量名单目运算符---自减运算符---变量名/变量名---单目运算符*取值运算符*指针变量单目运算符取地址运算符列表的单目运算符! 非逻辑运算符! 公式单目运算符(按位反转运算符(公式单目运算符sizeof长度运算符sizeof )公式)3/除法/公式左至右双目运算符)乘法公式)余数)取模)整数公式) ) ) ) ) )。 整数表达式4从左到右双目运算符-减法表达式5从左到右双目移位变量表达式6大于表达式=大于或等于表达式=小于或等于表达式=小于或等于表达式=表达式7==等于表达式==表达式从左到右双目运算符!=不等于公式!=表达式8位和表达式左至右双目运算符9^按位异或表达式^表达式左至右双目运算符10 |按位或表达式|表达式左至右双目运算符11逻辑和表达式左至右双目运算符12逻辑或表达式||表达式左至右双目运算符13?条件运算符表达式1? 公式2:公式3右向左三目算子14=赋值算子变量=公式右向左/=除法后代输入变量/=公式*=乘法后代输入变量*=公式%=取模后代输入变量%=公式-=减法后代输入变量-=公式=左移

1、优先级从1逐渐下降到15。

2、结合方向是指一个运算量两侧的运算符优先级相同时,按运算符结合性规定的结合方向处理。 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)两部分。 例如,算术运算符的结合性是从左到右,也就是说先从左到右。 如果存在表达式x-y z,则y必须与“-”符号一起执行x-y运算,然后执行z运算。 这种从左到右的结合方向称为“左结合性”。 从右到左的结合方向称为“右结合性”。 最典型的右连接运算符是赋值运算符。 如果x=y=z,则由于“=”的右连接性,必须先执行y=z,然后执行x=(y=z )运算。

3、关于优先顺序,可以简单地记述为算术运算符关系运算符逻辑运算符比特运算符赋值运算符。 逻辑运算符的“逻辑非! ”排除以及位运算符中,“按位取逆运算符~”除外。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。