Because the issue isn't the type of the return value of calloc; the issue is that no one promises that "0x00000000" represents zero in your particular floating-point representation. (I don't know of any commonly used floating-point representation where it isn't, although in floating slash it might represent +Inf.)