Reputation: 814
I have this code in a function, but when it runs it does a long pause and then it says:
$floating point exception
I am assuming this is due to multiple conditions in the for loop, but I don't know why it is wrong. Any ideas?
int i,j,number=5;
for (i = 2; (i < number || j==1); i++)
{
if (number%i==0)
{
j = 1;
}
}
Upvotes: 0
Views: 5424
Reputation: 385174
Remember that the condition is for the loop to continue, not for it to end.
It's difficult to look at your code and see intuitively what you're trying to do. Although you could fix this by flipping some logic around (you meant (i < number && j != 1)
), it's best to stop and use break
inside the loop instead. The logic will be far clearer, and then you won't make errors like this.
Upvotes: 2
Reputation: 49251
floating point exception - This means there's an arithmetic error.
It looks like you're trying to stop the loop with j, but what you're actually doing is continuing the loop forever (because once you get j==1 the or
condition is always true).
What then happens is you loop i through all the Integer values back to 0 and get the exception.
What I think you want to do is :
for (i = 2; (i < number); i++)
{
if (number%i==0)
{
j = 1;
break;
}
}
Upvotes: 7
Reputation: 96266
Once you set j
to 1 the loop will go on forever. If you want to stop the loop when the if
condition is true use break
.
Upvotes: 1
Reputation: 6223
You will get into an infinite loop when the if
-statement is reached. This will cause the error. You probably wanted to stop the loop if j == 1
? Then you had to write
for (i = 2; (i < number || j!=1); i++)
Upvotes: 0