Вы не хотите приводить указатель с плавающей точкой к целочисленному указателю.Числа с плавающей точкой и целые числа не сохраняются одинаково, и если вы сделаете это, преобразование не произойдет, и, таким образом, вы получите мусор, выведенный на экран.Однако, если вы приведете int-значение к значению с плавающей точкой, то компиляция преобразует число с плавающей точкой из его внутреннего типа в целое число для вас.Поэтому вы должны заменить (int *)
на (int)
.
Также, %d
для десятичных (целых) значений.То, что вы хотите, это %f
, для значений с плавающей запятой, для первого printf
.
То, что вы хотите, это:
#include <stdio.h>
int main()
{
float a = 12.5;
printf("%f\n", a); //changed %d -> %f
printf("%d\n", (int)a); //changed *(int *)& -> (int) for proper conversion
return 0;
}
проверено здесь: http://codepad.org/QD4kzAC9