c – 使用和不使用强制转换将float转换为int

这两个是等价的吗?

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.

转载注明原文:c – 使用和不使用强制转换将float转换为int - 代码日志