这两个是等价的吗?
float f = 3.14;
int i;
i = f; // 3
和
float f = 3.14;
int i;
i = (int) f; // 3
最佳答案
编译器处理这两种情况的方式没有区别.生成的机器代码将是相同的.但是,第一个是隐式转换,第二个是显式转换.根据编译器标志,在执行失去精度的隐式转换时可能会收到警告.
另外,文字3.14的类型为double,这意味着在float f = 3.14语句中也可能存在精度损失.一个干净的方法是写float f = 3.14f,它指定这是
float类型的值3.14.
相关文章
- 将float转换为int隐式vs显式(强制转换)差异
- objective-c - 在C和Objective C中,我们几乎不会只使用(int)将float或double值强制转换为整数吗?
- c - 将float转换为int,或将int转换为float?
- c - 是否有更直接的方法将float转换为int而不是添加0.5f并使用截断转换?
- assembly - 使用Bitwise将Int转换为Float/Float到Int
- python - 是否可以使用一行命令将[int,bool,float]转换为['int','bool','float']?
- c# - 无法将'string'类型转换为'int?'通过引用转换,装箱转换,拆箱转换,换行转换或空类型转换
- Haskell将Int转换为Float
转载注明原文:c – 使用和不使用强制转换将float转换为int - 代码日志