将float或double转换为int时,跨平台的行为是否一致?

时间:2017-05-30 03:38:19

标签: c++

例如,如果我有:

float f = 3.3456;
float g = 3.676455;

int j = f;
int k = g;

当f,g被强制转换为int时,所有平台的行为是否相同? j,k总是3吗?

例如,k会不会是4? 小数部分是否总是被截断,或者它是否被舍入?

这与建议重复的问题略有不同的原因是在这种情况下转换是隐式的。请参阅标记的答案,因为这与“重复的问题”中的标记答案直接相矛盾。

1 个答案:

答案 0 :(得分:4)

  

[...]所有平台的行为是否相同?

是。是的,它会。

来自N4659(我强调粗体):

  

7.10浮动积分转换[conv.fpint]

     

(1)浮点类型的prvalue可以转换为整数类型的prvalue。 转化截断;也就是说,小数部分被丢弃。 行为未定义如果截断的值无法在目标类型中表示