0
A
回答
4
當具有相同優先級的運營商打交道是指運營商關聯 - http://en.wikipedia.org/wiki/Operator_associativity
例如加號和減號聯想到左側,5 + 6 - 7 = (5 + 6) - 7
。
另一方面,一些運營商與右側相關聯,其中一個例子是賦值運算符。
a = b = c
相當於a = (b = c)
。在這種情況下,b = c
返回c並允許您鏈接分配。與運算符優先級規則一樣,這些可能難以記憶,所以如果不確定將所有內容放在括號中。
在你的情況下,所有的運營商關聯到左邊,這樣
c.e->d.f == a.b
相當於(((c.e)->d).f) == (a.b)
1
嘛,就像你說的,.
。和->
具有相同的優先級,高於==
。這意味着您發佈的表達式代表c.e->d.f
和a.b
之間的平等比較。
c.e->d.f
代表運營商->
應用到值c.e
。然後,.
又適用於c.e->d
的值。
換句話說,整個事情就相當於
(((c.e)->d).f) == (a.b)
注意,()
只能說明運營商和它們的操作數之間的分組。對評估的運行順序沒有任何形式的保證。
0
使用元件選擇運營商後綴表達式的語法如下:
6.5.1基本表達式
語法
1 primary-expression: identifier ...6.5.2郵政網絡運營商X
語法
1 postfix-expression: primary-expression ... postfix-expression.identifier postfix-expression->identifier ...
基於該語法,元件選擇運營商左結合。因此,像a->b.c
的表達式將被解析爲
a -> b . c
| | |
identifier | |
| | |
primary | |
expression | |
| | |
postfix | |
expression identifier |
| | |
+-----+-----+ |
| |
postfix identifier
expression |
| |
+---------+---------+
|
postfix expression
或(a->b).c
。最左邊的.
或->
首先結合,而其餘的.
或->
結合第一個結果。因此,你的例子解析爲
(((c.e)->d).f) == (a.b)
因爲.
和->
比==
具有更高的優先級。
相關問題
- 1. 運營商優先?
- 2. 運營商優先
- 3. 運營商超載的運營商優先級?
- 4. RPN中運營商的優先級
- 5. C++流和運營商>>優先
- 6. 運營商優先權在C
- 7. C#&&,||運營商
- 8. C#? :運營商
- 9. 運營商優先在Drools中排除
- 10. 運營商的情況下運營商
- 11. 的JavaScript +運營商VS - 運營商
- 12. 優先在SQL *運營商加
- 13. F#運營商定製優先
- 14. >>運營商超過/運營商的優勢
- 15. 空 - 結合運營商和運營商&&
- 16. 或運營商與三元運營商
- 17. C#| =和&=運營商
- 18. 空運營商C#
- 19. C++ [b]運營商
- 20. C++和++運營商
- 21. 運算符優先級和運營商結合規則++
- 22. Rust中的組合運營商和管道轉發運營商
- 23. C++鑄造運營商和傳統的C鑄造運營商
- 24. 運營商的sizeof(c)中
- 25. C#重載甲運營商(B L,B R)的運營商
- 26. Ternary?運營商VS傳統的if-else運營商在C#
- 27. 運營商=在C++中
- 28. Javascript:?運營商
- 29. R%*%運營商
- 30. instanceof運營商