Tuesday 18 October 2011

Predict the output or error(s) for the following:

  main()

{

            float me = 1.1;

            double you = 1.1;

            if(me==you)

                  printf("I love U");

          else

                 printf("I hate U");

}

Answer:

I hate U

Explanation:

For floating point numbers (float, double, long double) the values cannot be predicted exactly. Depending on the number of bytes, the precession with of the value  represented varies. Float takes 4 bytes and long double takes 10 bytes. So float stores 0.9 with less precision than long double.

Rule of Thumb:

Never compare or at-least be cautious when using floating point numbers with relational operators (== , >, <, <=, >=,!= ) .

6 comments: