循环返回do-while循环中的Condition为true



当我输入负整数时,它仍然循环回

#include <stdio.h>
#include <math.h>
int main() {
int n,i,z;
do {
printf("Input: ");
scanf(" %d",&n);
z=z+n;
} while (n != 0 || n < 0);
printf("Sum:%d",z);     
}

不确定您期望它做什么:

while (n != 0 || n < 0);

将其翻译成自然语言,它说"只要n不是0或小于0,就循环"。

我想现在很明显,第二个条件意味着第一个条件?只有当n恰好是0时,此循环才会退出。


注意,这不是唯一的错误:你很高兴使用z,而从未初始化过它,所以你最终可以得到任何值(z的初始值不确定(

您的代码调用未定义的行为(UB(,因为它试图求和到z,而z是未初始化的。

将其初始化为零。


此条件表示:

while (n != 0 || n < 0);

只要n具有与0不同的值或小于0,则再次循环。

我想当输入是负数时,你想停止循环,这意味着你需要这个:

while (n >= 0);

这意味着只要n是非负数(即0或正数(,就继续执行do while循环的主体。

但是,请注意,在for循环中有了这个结构,你会得到负数(看起来你喜欢它作为循环的中断信号(,它是从和z中提取的。

如果不希望发生这种情况,可以使用关键字break来停止循环的执行。

相关内容

  • 没有找到相关文章

最新更新