while(i = 0)和while(i == 0)之间的差异

Fru*_*der 6 c++

在我的考试中,C++中出现了以下问题

码:

int i, n;
int* A
cin >> n;
A = new int[n]
for(int i = 0; i < n; i++) cin >> A[i];

while(i = 0){
   cout << A[i] << endl;
   i--;
}
}
Run Code Online (Sandbox Code Playgroud)

什么是输出?我认为它应该进入无限循环!

Dar*_*mas 13

不,它不会进入无限循环:

while (i=0) { /* this code is never run */ }
Run Code Online (Sandbox Code Playgroud)

说明:

i = 0;
Run Code Online (Sandbox Code Playgroud)

评估0条件中的"假".


Jon*_*eet 13

while (i = 0)赋值 0 i,然后检查表达式的值(指定的值,即0)是否为非零.换句话说,它甚至不会执行循环体......它只会设置i为0.它还会对任何体面的编译器发出警告,因为这是一个常见的拼写错误.

遵循相同的逻辑,while (i = 1)将值1分配给i始终执行循环体...只有循环中的中断(或异常)才会终止它.

(许多其他语言没有广泛的问题,因为它们需要表达布尔类型的条件,例如while和if.虽然这些语言仍然经常有问题while (b = false).)