簡體   English   中英

返回(n > 2)? n = 5:n = 4; 不工作?

[英]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高於賦值運算符:

運算符優先級

  1. 后綴 ( expr++ expr-- )
  2. 一元 ( ++expr --expr +expr -expr ~ ! )

...

  1. 三元 ( ? : )
  2. 賦值( = += -= *= /= %= &= ^= |= <<= >>= >>>=

解析代碼時

(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);

我認為您可能有任何語法錯誤。 我在 chrome JS 控制台中嘗試過,效果很好!! 問題的解答

更新:有人在評論中爭辯說我沒有寫 function 所以我寫了函數格式並得到了相同的結果!在此處輸入圖像描述

語法:條件? 表達式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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM