一些指標比較的結果

如果使用 <><=>= 比較兩個指標,則在以下情況下未指定結果:

  • 指標指向不同的陣列。 (非陣列物件被視為大小為 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;
    };