for语句中的多个条件

时间:2011-07-16 18:05:50

标签: c++ for-loop

我在一个函数中有这个代码,但是当它运行时它会暂停一段时间,然后它会说:

$floating point exception

我假设这是由于for循环中的多个条件,但我不知道为什么它是错误的。有什么想法吗?

int i,j,number=5;
for (i = 2; (i < number || j==1); i++)
{
    if (number%i==0)
    {
        j = 1;
    }
}

4 个答案:

答案 0 :(得分:7)

浮点异常 - 这意味着存在算术错误。

看起来你正试图用j来阻止循环,但你实际上正在做的是永远继续循环(因为一旦你得到 j == 1 {{1}条件总是 true ) 然后,您将 i 通过所有整数值循环回 0 并获得异常。

我认为你想做的是:

or

答案 1 :(得分:2)

请记住,条件是循环继续,而不是它结束。

很难看到你的代码并直观地看到你正在尝试做什么。虽然你可以通过翻转一些逻辑(你的意思是(i < number && j != 1))来解决这个问题,但最好在循环中停止并使用break。逻辑将更清晰,然后你就不会犯这样的错误。

答案 2 :(得分:1)

j设置为1后,循环将永远继续。如果您想在if条件为真时停止循环,请使用break

答案 3 :(得分:0)

当达到if - 语句时,您将进入无限循环。这将导致错误。如果j == 1,你可能想停止循环?然后你必须写

for (i = 2; (i < number || j!=1); i++)