Tag: unspecified behavior

未指定,未定义和实现定义的行为WIKI for C

虽然SO上有很多关于这个主题的链接,但我认为有些东西缺失:用简单的语言明确解释未指定行为 (UsB), 未定义行为 (UB)和实现定义行为 (IDB)之间的区别)详细但容易解释任何用例和示例。 注意:为了在WIKI中实现紧凑性,我将UsB缩写为up,但是不要指望在其他地方使用它。 我知道这可能看起来与其他post(它更接近的是这个 ) 的重复 ,但在任何人将此标记为重复之前 ,请考虑我已经找到的所有材料的问题(我将要制作这个post中的社区WIKI): 太多分散的例子。 当然,例子并不坏,但有时人们无法找到一个很好地适应他手头问题的例子,因此它们可能会令人困惑(特别是对于新手)。 示例通常只是代码,但解释很少。 在这些微妙的问题上,特别是(相对)新手,更自上而下的方法可能更好:首先是一个清晰,简单的解释与抽象(但不是法律)的描述, 然后是一些简单的例子,解释为什么他们触发一些行为 。 有些post经常混合使用C和C ++示例。 C和C ++有时与他们认为的UsB,UB和IDB不一致,所以一个例子可能会误导那些不熟悉这两种语言的人。 当给出UsB,UB和IDB的定义时,通常它是标准的简单引用,有时可能不清楚或难以为新手消化。 有时引用标准是不完整的。 许多post只引用了对手头问题有用的部分标准,这很好,但缺乏一般性。 此外,标准的引用通常没有任何解释(对初学者不利)。 由于我自己不是这个主题的超级专家,我将建立一个社区WIKI,以便任何有兴趣的人都可以贡献并改进答案。 为了不破坏我创建一个结构良好的初学友好的WIKI的目的,我希望海报在编辑WIKI时遵循一些简单的指导原则: 对您的用例进行分类。 尝试将您的示例/代码放在已存在的类别下(如果适用),否则创建一个新类别。 首先是简单的单词描述。 首先用简单的词语描述(当然,不要过于简单化 – 质量第一!)你想要做的例子或要点。 然后输入代码示例或引用。 引用标准参考。 不要发布各种标准的片段,但要提供明确的参考资料(例如C99 WG14 / N ……第1.4.7节,第……段), 并在可能的情况下发布相关资源的链接。 喜欢免费的在线资源。 如果你想引用书籍或非免费可用的资源(可能会提高WIKI的质量),但也尝试添加一些免费资源的链接。 这对ISO标准尤为重要。 欢迎您添加官方标准的链接,但也尝试添加等效链接以免费提供草稿。 请不要将参考链接替换为参考官方标准, 添加到它们 。 甚至某些大学的某些计算机科学系也没有ISO标准的副本,更不用说大多数程序员了! 除非确实需要,否则不要发布代码。 仅在仅使用普通英语的解释尴尬或不清楚时才发布代码。 尝试将代码示例限制为单行。 发布指向其他SO Q&A的链接。 不要发布C […]