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