パズル

実行結果は何でしょう。Java Puzzlers(id:succeed:20060914)を読んだ方には、簡単すぎるかも知れませんが。

import java.lang.*;
import java.io.*;
abstract class Main {
    int x = 12 + 34>>4 + 1;
    public static void main(String argv[]) throws IOException {
        class Hoge extends Main {{
            System.out.println(x+++"+"+x+++"="+3l);
        }}
        new Hoge();
    }
}

なんか java.lang.*import してるし、[] の位置が C 言語っぽいし、IOException は投げられる可能性がないし、メソッドの中にクラスが書いてあるし、波括弧が二重になってるし、static じゃない変数 x を使ってるし、あと println() の引数は + がやたらと続きすぎ。ま、とりあえずコンパイルエラーじゃね? …と思った方、残念ながら不正解です。
そりゃコンパイルはできるよ。しかしメインクラスが abstract だから、実行すると main() が見付からないとかいう感じの例外になるに違いない。…と思った方、不正解です。
もちろん何らかの出力はあるだろう。とは言え、println() の中で x を 2 回もインクリメントしてるから、どうせ未定義とか不定とか、そういうことなんでしょ。…と思った方、やはり不正解です。
それなら、表示されるのは“15+16=31”か。いや待てよ、シフト演算子 >> は確か + よりも優先度が低かったはず…うむ、これは引っかけだ。答えは“1+2=31”。…と思った方、惜しい。
正解は、

1+2=3

でした。ここでの教訓は、「小文字のエルは数字のイチに見える」ということです。(結局パクリかよ)(つーかバレバレでしたかね)