# Floating Point Exception C++ Why and what is it?

I’m building a program for the Euler projects question 3, and while that might not really matter as a result I’m current trying to make this code take a number and test if it is prime or not. Now then before I get to troubleshoot the function it gives me the error “floating point exception” right after inputting the number. Here’s the code:

``````int main()
{
int input;
cout << "Enter number: " << endl;
cin>> input;
int i = input/2;
int c;
for (i>0; i--;) {
c= input%i;
if (c==0 || i == 1)
cout << "not prime" << endl;
else
cout << "prime" << endl;
}
return 0;
}
``````

so essentially why is it giving me a floating point exception and what does that even mean?

### 5 Answers

A “floating point number” is how computers usually represent numbers that are not integers — basically, a number with a decimal point. In C++ you declare them with `float` instead of `int`. A floating point exception is an error that occurs when you try to do something impossible with a floating point number, such as divide by zero.

``````for (i>0; i--;)
``````

is probably wrong and should be

``````for (; i>0; i--)
``````

instead. Note where I put the semicolons. The condition goes in the middle, not at the start.

Lots of reasons for a floating point exception. Looking at your code your for loop seems to be a bit “incorrect”. Looks like a possible division by zero.

``````for (i>0; i--;){
c= input%i;
``````

Thats division by zero at some point since you are decrementing i.

Since this page is the number 1 result for the google search “c++ floating point exception”, I want to add another thing that can cause such a problem: use of undefined variables.

Problem is in the for loop in the code snippet:
for (i > 0; i–;)

Here, your intention seems to be entering the loop if (i > 0) and decrement the value of i by one after the completion of for loop.

Does it work like that? lets see.

Look at the for() loop syntax:

``````**for ( initialization; condition check; increment/decrement ) {
statements;
}**
``````

Initialization gets executed only once in the beginning of the loop. Pay close attention to “;” in your code snippet and map it with for loop syntax.

Initialization : i > 0 : Gets executed only once. Doesn’t have any impact in your code.

Condition check : i — : post decrement.

``````              Here, i is used for condition check and then it is decremented.
Decremented value will be used in statements within for loop.
This condition check is working as increment/decrement too in your code.
``````

Lets stop here and see floating point exception.

what is it? One easy example is Divide by 0. Same is happening with your code.

When i reaches 1 in condition check, condition check validates to be true.
Because of post decrement i will be 0 when it enters for loop.

``````Modulo operation at line #9 results in divide by zero operation.
``````

With this background you should be able to fix the problem in for loop.