在do while循环中即使条件为true也会循环返回

时间:2018-07-30 13:21:21

标签: c

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

<app-deduction-invoice-item
          *ngFor="let item of deductionForm.get('items')?.controls; let i=index"
          [index]="i"
          [item]='item' // <-- HERE
          (removed)="deductionForm.get('items').removeAt($event)">
</app-deduction-invoice-item> 

2 个答案:

答案 0 :(得分:2)

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

将其初始化为零。


此情况如下:

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

只要n的值不同于0或小于0,请再次循环。

我猜您想在输入为负数时停止循环,这意味着您需要这样做:

while (n >= 0);

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

但是,请注意,在for循环中使用该结构后,您将从总和z中提取出负数(似乎您希望它是循环的中断信号)。

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

答案 1 :(得分:2)

不确定您希望这样做吗?

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

将其翻译成自然语言,并说“只要n不是0或小于0循环”。

>

我想第二个条件现在很明显暗示?仅当n恰好是0时,此循环才会退出。


请注意,这不是唯一的错误:您很高兴地使用z而不进行初始化,因此最终可以得到任何值(z的初始值为不确定