nullptr < ptr ptr < nullptr 为非空原始指针定义良好 ptr != nullptr ? 欢迎引用C++标准。
nullptr < ptr
ptr < nullptr
ptr != nullptr
这样的比较形式很好,但结果不详。
[expr.rel]/3 如果两个指针指向同一数组的不同元素或其子对象,则指向下标越高的元素的指针比较大。 如果一个指针指向数组的一个元素或其子对象,而另一个指针指向数组最后一个元素之后的一个元素,则后一个指针比较大。 如果两个指针递归地指向同一对象的不同非静态数据成员,或指向此类成员的子对象,则如果两个成员具有相同的访问控制(第11条),并且其类不是并集,则指向后一个声明成员的指针比较大。 [expr.rel]/4 如果两个操作数 p 和 q p<=q p>=q 两种产量 true p<q 和 p>q 两种产量 false 。否则,如果指针 , p>=q , q<=p q<p 全部收益率 真的 和 , p<q , q>=p q>p 全部收益率 假
[expr.rel]/3
如果两个指针指向同一数组的不同元素或其子对象,则指向下标越高的元素的指针比较大。
如果一个指针指向数组的一个元素或其子对象,而另一个指针指向数组最后一个元素之后的一个元素,则后一个指针比较大。
如果两个指针递归地指向同一对象的不同非静态数据成员,或指向此类成员的子对象,则如果两个成员具有相同的访问控制(第11条),并且其类不是并集,则指向后一个声明成员的指针比较大。
[expr.rel]/4 如果两个操作数 p 和 q p<=q p>=q 两种产量 true p<q 和 p>q 两种产量 false 。否则,如果指针 , p>=q , q<=p q<p 全部收益率 真的 和 , p<q , q>=p q>p 全部收益率 假
p
q
p<=q
p>=q
true
p<q
p>q
false
q<=p
q<p
真的
q>=p
q>p
假
空指针不属于 [expr.rel]/4