不应依赖未声明的行为
1.16 ID_unspecifiedBehavior
语言标准允许程序的某些行为可由编译器自行定义,且无需提供文档说明,这种行为称为未声明的行为(unspecified behavior),具有不确定性,也会降低可移植性,故不应使程序依赖未声明的行为。
对未声明行为的介绍和约束是本规则集合的重要内容,将在后续章节中深入讨论。
示例:
const char* p = "ABC";
const char* q = "ABC";
assert(p == q); // Unspecified behavior
相同字符串常量的地址是否相同是未声明的,例中的断言可能会失效,而且要注意,未声明的行为即使在同一编译器的不同版本之间也可能会有差异。
相关
依据
ISO/IEC 9899:2011 3.4.4
ISO/IEC 9899:2011 J.1
ISO/IEC 14882:2011 1.3.25