I will give you short answer: yes, it seems, that the decompiler is producing wrong code. Because this one:
byte b = 10;
b = b++;
has strongly predicted behavior (b
will not change).
UPD: Furthermore, no one of decompilers can give you 100% warranty of the correctness of generated decompiled code.
UPD-2: Are you sure, that you provide us actual version of your code? Because this one:
byte aa = 10;
a = (byte) (a +1);
of course is a mistake. It even will not compile :)
UPD-3 Well, I need to say, that Jad
decompiler (Jad 1.5.8g for Windows 9x/NT/2000 on Intel platform) produces the same code:
byte b = 10;
b++;
b = b;
...
java.lang.System.out.printf("a=%d \t b=%d \t c=%d\n", new java.lang.Object[] {...
But this is not surprising: Cavaj Java decompiler uses Jad as its Java decompiling engine.
Conclusion: Consider this behavior as a feature/bug of Jad
decompiler, which is far from a perfection.