如果有:
unsigned int x;
x -= x;
很明显,在这个表达式之后,x
应该是零,但是无论我看哪里,他们都说这段代码的 行为是未定义的,而不仅仅是 x
的值(直到减法之前)。
两个问题:
这段代码的 行为确实是未定义的吗?
(例如,代码可能在一个顺从的系统上崩溃[或更糟糕] ?)
如果是这样,那么当完全清楚 x
在这里应该为零时,C 是否说 行为是未定义的?
也就是说,如果没有在这里定义行为,那么 优势是什么呢?
显然,编译器可以简单地在变量内部使用它认为“方便”的 随便啦垃圾值,并且可以按预期的方式工作... ... 这种方法有什么问题吗?