将char转换为int并将int转换为double是否总是安全的?

时间:2012-12-16 19:03:32

标签: c

对于小端和大端?

如果他们在阵列中怎么办?它也安全吗?

2 个答案:

答案 0 :(得分:3)

这与Endianness无关。

正如你所看到的here,char几乎可以肯定是8位,所以将它转换为整数在各个方面都是安全的。

然而,

将int转换为double是不行的。例如,数字2 ^ 63-10不能精确地以64位双精度表示。阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic.这里,强制转换将导致数字被截断,从而导致精确丢失。

幸运的是,所有32位的整数都可以毫无损失地进行投放,所以如果你的整数是32位,你就会很好。

答案 1 :(得分:2)

是的,只要您输入常规C变量,就很安全。

如果要改变或移动构成这些变量的原始字节,则只需要担心字节序。