代码如下所示
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;
}
当我删除&& N时,我的输出中有很多零,我真的不知道为什么
答案 0 :(得分:0)
声明
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
。
您的问题中的&& N
在N
到达0
时停止循环。