[英]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.