Если у меня есть:
unsigned int x;
x -= x;
ясно, что x должно быть равно нулю после этого выражения, но везде, где я смотрю, они говорят, что поведение этого кода undefined, а не только значение x (до до вычитания).
Два вопроса:
-  Действительно ли поведение этого кода undefined? 
 (Например, может ли произойти сбой кода [или хуже] на совместимой системе?)
-  Если это так, , почему говорит, что поведение undefined, когда совершенно ясно, что xздесь должен быть здесь?то есть. Какое преимущество дает не определение поведения здесь? 
Ясно, что компилятор мог просто использовать любую ценность мусора, которую он считал "удобной" внутри переменной, и она будет работать по назначению... что не так с этим подходом?
