this program gives output as : C why? -------------------------------------------------------------- i browsed and found a answer saying (c<0.7) 0.7 is double by default & variable c is float so the condition turns true then it must be true for all values but if i use c=0.8/*or 0.007 or 0.223*/ if(c<0.8/*0.007 or 0.223*/) it prints C++ i want answer for this!!!!
you are running into a precision issue between floats and doubles. The easiest way to fix it is to add a 'f' to the literal telling the compiler to store it as a float. the code should work then. Code: #include<stdio.h> #include<conio.h> void main() { float a=0.7f; if(a<0.7f) printf(" C "); else printf("c++"); getch(); } this should work as you would expect. The import take away is that when comparing floats and doubles it gets muddy if the numbers are really close together because of the different number of significant bits for each type.