![](/img/trans.png)
[英]Generics compilation error with ternary operator in Java 8, but not in Java 7
[英]compilation error with ternary operator
我嘗試使用三元運算符以下,但我不明白為什么它不編譯。 這個問題似乎很小,但我不明白,因此困擾我-
第1行 -> int a = false? y + = 1:(x * = 10);
第2行 -> int b = false? y + = 1:x * = 10;
第1行編譯,但是第2行不編譯。 為什么呢
在第3個操作數而不是第2個操作數的情況下,括號有何不同? 我不必在第二/第三操作數中使用括號與其他任何內容(一元,字符串,基本算術...)為什么只使用賦值運算符,而又太具體地使用第三操作數呢?
提前致謝 !
如果在x*=10
周圍沒有()
,則*=
運算符的整個左側操作數為false ? y+=1 : x
false ? y+=1 : x
,就好像您有:
int b = (false ? y+=1 : x)*=10;
和false ? y+=1 : x
false ? y+=1 : x
不是變量,不能是*=
的左操作數。
在優先級列表中 ,條件運算符( ? :
:)下的賦值運算符(包括復合賦值, *=
等)非常低:
運算符優先
- 后綴:
expr ++ expr --
- 一元:
++ expr -- expr + expr - expr ~ !
- 乘法:
* / %
- 加成物:
+ -
- 班次:
<< >> >>>
- 關系:
< > <= >= instanceof
- 平等:
== !=
- 按位:AND
&
- 按位:異或
^
- 按位:包含或
|
- 邏輯:AND
&&
- 邏輯:OR
||
- 三元:
? :
? :
- 分配:
= += -= *= /= %= &= ^= |= <<= >>= >>>=
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.