Hello everyone, I am a intermediate programmer that had done some programming with PHP, ASP, SQL, Fortran, Matlab and VB and now wanting to learn C.
however I am coming through some very awkward problem, the logic is defeating itself.
Code:
#include <stdio.h>
main()
{ double x;
double y;
printf("hello\n");
y = 2.0;
while (y < 100.0)
{
y = y + 0.5;
printf("y = %f\n" y);
/* output statement */
if (y < 100.0)
{
printf("y is less than 100.0 because y is %f\n", y);
}
else
{
printf("y is greater than 100.0 because y is %f\n", y);
}
}
}
output:
y is less than 100.0 because y is 3.000000
y is less than 100.0 because y is 3.500000
y is less than 100.0 because y is 4.000000
y is less than 100.0 because y is 4.500000
y is greater than 100.0 because y is 5.000000
y is greater than 100.0 because y is 5.500000
y is greater than 100.0 because y is 6.000000
y is greater than 100.0 because y is 6.500000
y is greater than 100.0 because y is 7.000000
y is greater than 100.0 because y is 7.500000
y is greater than 100.0 because y is 8.000000
y is greater than 100.0 because y is 8.500000
y is greater than 100.0 because y is 9.000000
Strange thing is, the output statement is outputing the else after y becomes greater than 5.0.
its as simple as, I went into a loop with a specific condition (y < 100), but within the loop, when I use if (y<100), some times the result is true, sometimes its false!!!
I am not sure if it is a compiler problem, a windows problem, a type casting problem or anything, I am scratching my head all over it.
Below is the system and C compiler configuration:
Windows Vista Business SP2 32bit
CPU: Intel Q9500
C compiler: Tiny C compiler 0.9.25 (TCC)
would be grateful if anyone can give any suggestion.