Why is it an error? I'm asking because it might shed light on why "c++;" is valid.

Exactly what happens when you say "c++;" involves all sorts of fussy details. They are described in the Java...