[英]return (n > 2) ? n = 5 : n = 4; doesn't work?
為什么這會返回錯誤
return (n > 2) ? n = 5 : n = 4;
但這並不
return (n > 2) ? n = 5 : n + 4;
根據這兩種情況,它是否不能返回n
?
您擁有的代碼無法編譯,因為三元運算符的operator precedence
高於賦值運算符:
運算符優先級
- 后綴 (
expr++ expr--
)- 一元 (
++expr --expr +expr -expr ~ !
)...
- 三元 (
? :
)- 賦值(
= += -= *= /= %= &= ^= |= <<= >>= >>>=
)
解析代碼時
(n > 2) ? n = 5 : n = 4;
它會像這樣解析它:
(n > 2) ? n = 5 : n // ternary operator
= 4 // assignment operator
這將導致如下偽代碼:
someResultValue
= value;
這將不起作用,並且您會收到如下編譯錯誤:
'標記“=”的語法錯誤,<=預期'
或者
'類型不匹配:無法從 Object & Comparable<?> & Serializable 轉換為 int'。
您可以使用括號讓 java 看到三元運算符的第三個參數為n = 4
。 代碼如下所示:
return (n > 2) ? n = 5 : (n = 4);
語法:條件? 表達式1:表達式2;
嘗試這個
public class Solution {
public static void main(String[] args) throws IOException {
int a = 10;
int b = (a>5)?a=5:0;
System.out.println("a = "+ a);
System.out.println("b = "+b);
}
}
output:a = 5 b = 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.