c – 未定义与未指定与实现定义的行为
维基百科有关于
undefined和
unspecified行为的页面,其中的链接在SO中的评论和答案中被广泛使用.
每一个都以一个不与其他人混淆的音符开头,但除了一个没有非常明确的句子,他们没有指出它们之间的区别. 其中一个给出了一个例子(比较2个变量的地址:& a<& b)与注释,这将导致C中未指定的行为,在C中未定义. 是否有可能以明确,可理解的方式确定未定义和未指定行为之间的实质性差异? 解决方法
简而言之:
>未定义的行为:这是不可行的 或者,在C标准的引用中(N4659第3节,术语和定义):
编辑:*正如M.M在评论中指出的那样,说未指明行为的结果可能是任何事情都不对.事实上,正如标准本身所指出的那样,在第3.29段的说明中
所以在实践中你可以了解可能的结果是什么,但究竟会发生什么取决于你的编译器/编译器标志/平台/等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |