一些指针比较的结果

如果使用 <><=>= 比较两个指针,则在以下情况下未指定结果:

  • 指针指向不同的数组。 (非数组对象被视为大小为 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;
    };