Python Expressive Puzzlers 8: Does Equal

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下的Java程式會輸出什麼結果?
1
2
3
4
5
6
7
8
public class DosEquis {
  public static void main(String[] args) {
    char x = 'X';
    int i = 0;
    System.out.print(true  ? x : 0);
    System.out.print(false ? i : x); 
  }
}

輸出結果會是XX嗎?根據 JLS 15.25的說明(true ? x : 0)的運算結果會是char型別,而(false ? i : x)的運算結果會是int型別。所以輸出結果為X88

而 Python 只有 <expression1> if <condition> else <expression2>的語法,沒有 Java 的 conditional operator 的語法,於是不會有這樣子的Pitfall。

沒有留言: