Он не определен, потому что он изменяется xдважды между точками последовательности. Стандарт говорит, что он не определен, поэтому он не определен. Это много я знаю. Но почему? Я понимаю, что запрет этого позволяет компиляторам оптимизировать лучше. Это могло иметь смысл, когда C был изобретен, но...