You don't want to cast the float pointer to an integer pointer. Floats and integers are not stored the same way and if you do that then there is no conversion that will take place, and thus you will get garbage printed to the screen. If however you cast an int-value to a float-value then the compile will convert the float from it's internal type into an integer for you. So you should replace the (int *)
with (int)
.
Also, %d
is for decimal(integer) values. What you want is %f
, which is for float values, for the first printf
.
What you want is this:
#include <stdio.h>
int main()
{
float a = 12.5;
printf("%f
", a); //changed %d -> %f
printf("%d
", (int)a); //changed *(int *)& -> (int) for proper conversion
return 0;
}
verified here: http://codepad.org/QD4kzAC9
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…