だから以下は未定義だと何度言ったら分かる
y=(++x)*(++x);
JIS X 3010:2003規格表嫁

P48 6.5
直前の副作用完了点から次の副作用完了点までの間に
式の評価によって一つのオブジェクトに格納された値を変更する
回数は、高々1回でなければならない。さらに、変更前の
値の読み取りは、格納される値を決定するためだけに行われ
なければならない。

今回のでは、副作用完了点から次の副作用完了点の間で
++xが2回有ることから未定義の式文
よってこれが3になろうが5になろうが、画面から猫が飛び出そうが
知ったこっちゃない