所以如下:
double t = 244.233;
int a = (int) t;
不是未定义的行为,因为 244 可以容纳在里面int
我做对了吗?
否则,如果它是更大的值而不是 244,它不适合 int 这将是未定义的,我做对了吗?
我更感兴趣的是 C 是如何做到这一点的。但是这种情况下与 C++ 有区别吗?
来自 [conv.fpint]:
浮点类型的纯右值可以转换为整数类型的纯右值。转换截断;
也就是说,小数部分被丢弃。如果无法截断值,则行为未定义
以目标类型表示。
例如,将 66666.66 转换为int16_t
将是未定义的行为,但转换66.66
就很好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)