好奇心から、DJJavaDecompilerとCAVAJJavaDecompiler (Javaバージョンは1.7)を使用して以下のコードを逆コンパイルし ました。これが通常のソースコードです。
byte a = 10;
a = (byte) (a +1);
byte b = 10;
b = b++;
byte c = 10;
c +=c;
System.out.printf("a=%d \t b=%d \t c=%d\n",a,b,c);
これは、出力を次のように表示します:a = 11 b = 10 c = 20
そして、これが逆コンパイルされたものです:
byte a = 10;
a++;
byte b = 10;
b++;
b = b;
byte c = 10;
c += c;
System.out.printf("a= %d \t b = %d \t c = %d\n", new Object[] {
Byte.valueOf(a), Byte.valueOf(b), Byte.valueOf(c)
});
これをソースコードとして使用すると、次のように出力されます:a = 11 b = 11 c = 20
byte
より明確にするために、それは同じことが起こっていることとは何の関係もありません、int
そして私はオンラインコンパイラIDEONEで上記のコードをチェックし、私のものと同じ出力を与えました。
それで、逆コンパイラーは間違ったコードを生成していますか、それとも何か他のものですか?