typedef unsigned short int UWORD;
1, float ftemp=-1.000f;
printf("\ttres_UWORD = %d\n",((UWORd)(ftemp)));
结果:ttres_UWORD =0
2,printf("\ttres_UWORD = %d\n",((UWORd)( -1.000f)));
结果:ttres_UWORD =65535
两个结果为什么不一样呢?
结果没有写错;1和2唯一的区别是
1是将浮点变量强制转换成 unsigned short int
2是将浮点常量强制转换成 unsigned short int
而且在Linux2.6下编译完,1和2的结果都是65535。
Linux2.4 浮点数强制转换成无符号整型问题?
答案:2 悬赏:0 手机版
解决时间 2021-03-07 22:54
- 提问者网友:半生酒醒
- 2021-03-06 22:57
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-03-06 23:26
我测试了一下,你的结果可能写反了。
而且,测试中发现,如果是short、int类型就没有问题,只是unsigned short , unsigned int有问题
查阅资料也没有非常清晰的说明。
我觉得应该算是C的一个BUG。再等高人吧,看看有没有更清楚的大师。
而且,测试中发现,如果是short、int类型就没有问题,只是unsigned short , unsigned int有问题
查阅资料也没有非常清晰的说明。
我觉得应该算是C的一个BUG。再等高人吧,看看有没有更清楚的大师。
全部回答
- 1楼网友:动情书生
- 2021-03-07 00:04
搜一下:Linux2.4 浮点数强制转换成无符号整型问题?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯