Can anyone explain why this code:
#include <stdio.h>
int main(int argc, char *argv[])
{
double a = -0.6;
double b = 2025.0;
double c = a * b;
printf("a * b = %f\n", a * b);
printf("a * b = (int) %d\n", (int) (a * b));
printf("a * b = (float) %f\n", (float) (a * b));
printf("a * b = (int) (float) %d\n", (int) (float) (a * b));
printf("a * b = (int) %d\n", (int) c);
return 0;
}
produces this result:
a * b = -1215.000000
a * b = (int) -1214
a * b = (float) -1215.000000
a * b = (int) (float) -1215
a * b = (int) -1215
Of particular interest is the second integer result of 1214. The results were produced with gcc v3.4.3.