E.O.
E.O.

Reputation: 814

Multiple conditions in for statement

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

Answers (4)

Lightness Races in Orbit
Lightness Races in Orbit

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

Yochai Timmer
Yochai Timmer

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

Karoly Horvath
Karoly Horvath

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

marc
marc

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

Related Questions