它让我感到有点奇怪,我听说过来自C和C++但未从其他语言中加载未定义的行为示例,其中我也知道C和C++是在可靠性至关重要的许多情况下使用。在SO上搜索“未定义的行为”几乎完全是C和C++的结果。C和C++以外的语言中未定义行为的示例
在我正在教授的一门课程中,我还想给出一些其他主要语言的怪异陷阱或未定义行为的例子。有人可以提供一些类似于int i的具体示例; if( - i == i ++){...}会导致其他语言中的未定义行为?
例如,我明白如果(-i == i ++){...}在C++中未定义,但在c#中定义,因为这里描述的额外序列点Is (--i == i++) an Undefined Behavior?。我想要其他语言中的未定义行为的示例,这些行为不是非强制性错误,例如忘记初始化变量或不锁定共享数据。
多线程程序错误的同步可能导致“未定义的行为”,在许多语言中,我想。你是指这种行为? – 2013-02-17 22:10:05
这是一个有趣的问题,但这不是真正的这个论坛的问题...更可能引起辩论而不是清晰的答案。 – Floris 2013-02-17 22:10:13
这可能是因为在c/C++中你用指针工作得太多了,你必须自己分配内存。当你在c中使用一个字符串(char *)时,很容易忘记添加尾随的'\ 0',如果你试图打印它,会导致未命中的行为,而在很多语言中,比如python,你不会必须担心这一点。 – 2013-02-17 22:10:19