C 和 C++ 中未定义、未指定和实现定义的行为之间的区别?
未定义的行为只是未由 C++ 规范定义的行为。例如,如果您在 i++ + ++i 这样的表达式中有多个一元增量/减量运算,它们会导致未定义的行为。这仅仅是因为一些语言结构在语法上有效,但当代码运行时你无法预测其行为。另一个示例是表达式:u = (u++);
由实现定义的行为是未由规范指定的并且由实现者决定并记录做出选择的方式的行为。在这种情况下,必须保证所做的选择,即,只会发生这种情况。
对于未指定的行为,C++ 标准提供了多种可能的路径,不要求实现文档化或保证任何内容。
广告