1. 程式人生 > >Java三目運算子的一些冷知識

Java三目運算子的一些冷知識

  • 1、如題,試寫出輸出結果:
int a = 1, b = 10;
int temp1 = 0 < 1 ? a++ : b++;
System.out.println("a = " + a + ", b = " + b);
System.out.println("temp1 = " + temp1);
  • 2、如題,試寫出輸出結果:
int c = 1, d = 10;
int temp2 = 0 < 1 ? c = c + 1 : d + 1;
System.out.println("c = " + c + ", d = " + d);
System.out.println("temp2 = "
+ temp2);
  • 3、如題,試寫出輸出結果:
char a = 'A';
int i = 0;
System.out.println((true ? a : 0) + "," + (false ? i : a));

下面先給出上面三道題的答案:
1、a = 2, b = 10
temp1 = 1

2、c = 2, d = 10
temp2 = 2

3、A,65

  • 題1,主要說明三目運算子只執行正確的那一個,temp1得到的值是a++,而a++賦值結果就是a,直到下一步a才變為a+1。

  • 題2,主要的問題出在最後的d+1上面,因為沒有打括號,所以就只會選擇d,然後temp2再加1得到新的temp2。

  • 題3,這個結果就有點出乎意料了,當執行false ? i : a時,打印出來的結果是65,這很明顯是大A的ASC碼值,為什麼不是A直接被打印出來呢?(這裡博主也暫時不知道為什麼,等想到了再來結這個貼了)

ps:希望各位多多指教。