c语言运算符结合性

如题所述

2L
shorker
不确切,所有单目运算符优先级相同,且为右结合性,*x++和*(x++)等价。
可以说,结合性规则在具有多个优先级相同的运算符的表达式中指定了一种新的临时的优先级规则,以便确定运算顺序(所以
LS
引用的资料里面说“后缀
++

--
操作符本质上比前缀一目操作的优先级高”——像++x--这样等价于++(x--))。
另外要注意,ISO/IEC
C标准没有规定求值顺序。例如(*(++p))-(++(*p))先计算减数还是先被减数,后和……计算这种思路也是不确切的。
通俗地说,无论++是在左边还是在右边。所以说先和……计算。
优先级相同时,结合性规则才有效。由于*和++优先级相同,和实现(编译环境)有关,是不确定的,结合性规则只是确定表达式中相同优先级运算符的一些子表达式中,括号具体加在哪个上面。至于加上括号以后互不嵌套的子表达式具体先计算哪一个,从语言的规则本身是无法确定的1L
脱壳期的蛹
错误,将x指针指向的变量自增的表达式应该是(*x)++
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-01
c语言中右结合的运算符有:
(1)!逻辑非运算符;~按位取反运算符;++前缀增量运算符;--前缀减量运算符;+正号运算符;-负号运算符;(类型)类型转换运算符;*指针运算符;&地址运算符;sizeof长度运算符
(2)?
:条件运算符
(3)=、
+=、
-=、
*=、
/=、
%=、
&=、
^=、
|=、
<<=、
>>=赋值运算符本回答被提问者采纳
第2个回答  2020-04-24
是啊,就是先和右边的,再和左边的。
你举的那两个例子是这样的:
*X++是将X指针指向的变量加1
*(X++)是将X指针加1(是地址加一个存储单位)然后取指向的空间里的值。
第3个回答  2020-04-28
后缀
++

--
操作符本质上比前缀一目操作的优先级高,
因此
*p++

*(p++)
等价,
它自增
p
并返回
p
自增之前所指向的值。要自增
p
指向的值,
使用
(*p)++,
如果副作用的顺序无关紧要也可以使用
++*p。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网