C和C ++中未定义,未指定和实现定义的行为之间的区别?

未定义行为只是C ++规范未定义的行为。例如,如果在类似i ++ + ++ i的表达式中有多个一元增/减操作,它们将导致未定义的行为。这仅仅是由于以下事实:某些语言结构在语法上是有效的,但是您无法预测代码运行时的行为。另一个示例是表达式:u =(u ++);

实现定义的行为是规范未指定的行为,由实现者决定和记录选择的方式。在这种情况下,必须保证所做的选择,即仅应进行选择。

如果发生未指定的行为,则C ++标准提供了多种可能的路径,不需要实现即可记录或保证任何内容。