x ? y : z = 1;
がC++では
x ? y : (z = 1);
と解釈されるがCでは
(x ? y : z) = 1;
と解釈される (そしてエラーになる) という意味では

++x は左辺値の方が参照が取れて便利だから?