[英]Operator precedence Confusion
大家好,在通过href = http://en.cppreference.com/w/c/language/operator_precedence此链接之后,我以为我理解了运算符的优先级,但随后引起了疑问。 该链接表示, 在解析表达式时,在某行上列出的某个运算符将比在其下一行上列出的任何运算符更严格地(如用括号括起来)绑定到其参数。 例如,表达式* p ++被解析为*(p ++),而不是(* p)++。
那么如何对表达式++ * p进行求值,就像++(* p)一样,但是如果是,++的优先级或绑定度更高,那么*,那么为什么在上述情况下*绑定得更紧,表达式又如何* ++ p?
是++
优先级高于*
并且两者的关联性是从右到左。
所以
++*p
将被评估为++(*p)
因为++
需要以可修改的值应用。
而
如您所见, *++p
在求值时会看到,与p
接近的运算符是++
,并且比*
具有更高的优先级,因此++p
将首先发生,然后再取消引用*(++p)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.