我听说过大量来自 C 和 C++ 而不是来自其他语言的未定义行为示例,这让我感到有点奇怪,我也知道 C 和 C++ 用于许多可靠性至关重要的情况。在 SO 上搜索“未定义行为”几乎只产生 C 和 C++ 结果。
在我正在教的一门课程中,我还想举一些其他主要语言的奇怪陷阱或未定义行为的例子。有人可以举几个类似于 int i 的具体例子吗?if(--i == i++){...} 会导致其他语言中未定义的行为?
例如,我理解 if(--i == i++){...} 在 c++ 中未定义,但在 c# 中定义,因为此处描述的额外序列点是 (--i == i++) 是未定义的行为吗?. 我想要其他语言中未定义行为的示例,这些示例不是非强制错误,例如忘记初始化变量或未锁定共享数据。