Why isn't variable b assigned the value 10?

```
int *a;
int c = 5;
float b = 5.1;

a = (int*)&b;
*a = 10;

printf ("a = %p, &b = %p, b = %lf, *a = %d\n", a, &b, b, *a);

```

result: b = 0.00000, \*a = 10