我在一个函数中有这个代码,但是当它运行时它会暂停一段时间,然后它会说:
$floating point exception
我假设这是由于for循环中的多个条件,但我不知道为什么它是错误的。有什么想法吗?
int i,j,number=5;
for (i = 2; (i < number || j==1); i++)
{
if (number%i==0)
{
j = 1;
}
}
答案 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++)