一些指针比较的结果
如果使用 <
,>
,<=
或 >=
比较两个指针,则在以下情况下未指定结果:
-
指针指向不同的数组。 (非数组对象被视为大小为 1 的数组。)
int x; int y; const bool b1 = &x < &y; // unspecified int a[10]; const bool b2 = &a[0] < &a[1]; // true const bool b3 = &a[0] < &x; // unspecified const bool b4 = (a + 9) < (a + 10); // true // note: a+10 points past the end of the array
-
指针指向同一个对象,但指向具有不同访问控制的成员。
class A { public: int x; int y; bool f1() { return &x < &y; } // true; x comes before y bool f2() { return &x < &z; } // unspecified private: int z; };