在 C 和 C++ 中,未定义、未指定和实现定义的行为有什么区别?


未定义行为就是 C++ 规范没有定义的行为。例如,如果你在一条表达式中有多个单操作增量/减量运算,例如 i++ + ++i,它们导致的行为是未定义的。这仅仅是因为有些语言结构在语法上有效,但你无法预测代码运行时会发生什么行为。另一个例子是表达式:u = (u++);

实现定义行为是由规范未指定的且由实现者决定和记录其选择方式的行为。在这种情况下,所做出的选择必须是确定性的,也就是说,只应发生该选择。

对于未指定的,C++ 标准提供了多条可能的路径,不需要实现者记录或保证任何内容。

更新于: 30-Jul-2019

335 次浏览

职业生涯迈出第一步

完成课程获得认证

开始学习
广告