mat*_*att 7 iphone floating-point casting
试试看:
volatile float bob = -344.0f;
unsigned int fred = (unsigned int)bob;
printf("%d\n",fred);
Run Code Online (Sandbox Code Playgroud)
输出将为0.
很明显我期待它就好像我已经从一个带符号的int转换为一个未编译的int(它确实包装并在iphone上按预期运行)
我们假设它与浮点设置有关.
有任何想法吗?
Pau*_*l R 11
这是预期的 - 将负浮点数转换为unsigned int会导致未定义的行为(UB).如果你想让值环绕(也就是UB,BTW),那么你需要首先转换为(signed)int,然后转换为unsigned int.理想情况下,你根本不应该依赖UB,找到一种更好的方法来做你需要做的事情.
| 归档时间: |
|
| 查看次数: |
2450 次 |
| 最近记录: |