试试看:
volatile float bob = -344.0f;
unsigned int fred = (unsigned int)bob;
printf("%d\n",fred);
输出将为 0。
显然,我希望它能够回绕,就像我从一个有符号的 int 转换为一个无符号的 int 一样(它确实在 iphone 上按预期回绕并起作用)
我们假设这与浮点设置有关。
有任何想法吗?
这是可以预料的——将负浮点数转换为无符号整型会导致未定义的行为 (UB)。如果您希望该值环绕(这也是 UB,顺便说一句),那么您需要先转换为(有符号)int,然后再转换为无符号 int。理想情况下,您根本不应该依赖 UB,而是找到更好的方法来完成您需要做的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)