C标准是否保证两个NULL指针的x > y比较结果恒为false?
C标准对两个NULL指针比较
x > y的保证 - C标准明确保证:当
type_t* x = NULL; type_t* y = NULL;时,x > y的求值结果始终为false。 - 依据:所有空指针在比较时都是相等的,即
x == y结果为true,由此可推导出x > y必然为false,同理x < y也为false。 - 关于指针比较的限制(仅指向同一数组/对象的指针可比较),这条规则只针对非空指针。空指针之间的比较不受此约束,标准允许空指针进行相等性和不等性比较。
对于你要实现的栈式数组结构体:
把空数组的首元素和尾后元素字段都设为NULL是完全安全的。此时像for (type_t* p = arr_head; p < arr_tail; p++)这样的循环会直接跳过执行,不需要额外显式检查数组是否为空,这种实现方式是可行的。
内容的提问来源于stack exchange,提问作者Sasha
相关产品推荐
相关产品推荐

