例如,如果我有:
float f = 3.3456;
float g = 3.676455;
int j = f;
int k = g;
当f,g被强制转换为int时,所有平台的行为是否相同? j,k总是3吗?
例如,k会不会是4? 小数部分是否总是被截断,或者它是否被舍入?
这与建议重复的问题略有不同的原因是在这种情况下转换是隐式的。请参阅标记的答案,因为这与“重复的问题”中的标记答案直接相矛盾。
答案 0 :(得分:4)
[...]所有平台的行为是否相同?
是。是的,它会。
来自N4659(我强调粗体):
7.10浮动积分转换[conv.fpint]
(1)浮点类型的prvalue可以转换为整数类型的prvalue。 转化截断;也就是说,小数部分被丢弃。 行为未定义如果截断的值无法在目标类型中表示。