鍋あり谷あり

テーマを決めずに適当に書いています。

私の知らないjava

最近 java の本を読んでいる。
意外な仕様がいろいろあって面白い。
で。
最初に取り上げるのは、左辺値は変数か配列というルール。

int main()
{
  int a=0, b=1;
  ( true ? a : b ) = 3;
  printf( "%d\n", a ); // 3 を出力
}

まああんまりこんなことを書く人はいないわけだが、私は仕事で書いたことがある。
ような気がする。

同じことを java でやろうとすると:

// クラス省略
public static void main(String[] args) {
  int a=0, b=1;
  ( true ? a : b )=3; // エラー「代入の左側は変数でなければなりません。」
  System.out.println(a);
}

エラー。
ちょっと残念。