为什么 while (cout << A[--N] << && N) 和 while (cout << A[--N] << ) 给了我两个不同的答案,这

why does while (cout << A[--N] << ' ' && N) and while (cout << A[--N] << ' ') gave me two different answer, what does N here do?

本文关键字:lt --N cout while 答案 两个 为什么      更新时间:2023-10-16

代码就像以下

int main() {
 int N, i = 0;
cin >> N;
int *A = new int[N];
while (cin >> A[i++])
    ;
while (cout << A[--N] << ' ' && N)
    ;
delete[] A;
return 0;
}

当我删除&amp; amp; n时,我的输出零很多,我真的不知道为什么

语句

std::cout << A[--N] << ' '

如果没有错误,则返回true。循环

while (std::cout << A[--N] << ' ');

输出值直到发生错误。只要A[--N]不尝试读取无法访问的内存,

 std::cout << A[--N] << ' '

将评估true

程序

#include <iostream>
int main() {
    int a[5];
    std::cout << a[-10];
    return 0;
}

具有不确定的行为,但可以编译和执行。在许多情况下

std::cout << a[-10];

将是true

您问题中的&& NN到达0时停止循环。