C语言在int、float、double格式之间进行强制类型转换时,程序按照如下原则来转换数值和位模式(假设int是32位):
1. 从int转换为float,数字不会溢出,但是可能被舍入。
2. 从int或float转换为double,因为double有更大的范围,也有更大的精度,所以能够保留精确的数值。
3. 从double转换成float,因为范围要更小一些,所以值可能溢出成+∞或-∞。另外,由于精度较小,它还可能被舍入。
4. 从double或float转换成int,值将会向0截断。例如,1.999将被转换成1,而-1.999将被转换成-1。注意这种行为与舍入是非常不同的。进一步来说,值可能会溢出。C标准没有对这种情况进行指定固定的结果,但是在大部分机器上,结果将是TMax或TMin。
这是从百度上找的、、