有人可以向我解释为什么这段代码不输出任何东西吗

Can someone explain to me why this code doesn't output anything

我已经为这里出了什么问题而崩溃了。在输出中我几乎什么也得不到。 很奇怪,通过正常的 cout.

没有任何输出

请帮帮我!谢谢。

int main() {
    int x = 111111;
    array<int, 10> numbers;
    numbers.fill(8);
    const auto numbers_copy = numbers;
    int y = 222222;
    
    for (int* i = &y; i <= &x; i++) {
        cout << *i << ' ';
    }
    cout << endl;
}

这个循环:

for (int* i = &y; i <= &x; i++) {

undefined behavior (UB).

比较指向不相关对象的指针有未指定的结果。在这种情况下 i 指向 2 个不同的 int 对象,xy,因此第一次比较可能为真也可能不为真,因为无法保证 2堆栈上的对象将在内存中一个接一个地连续放置,或以任何特定顺序放置。

这同样适用于循环的第二次迭代。在第二次迭代中,当您第二次执行 i++ 时,这是未定义的行为,因为当它指向 int.[=19 时,您不能将 i 递增那么远=]