Linux2.4 浮点数强制转换成无符号整型问题?

Linux2.4 浮点数强制转换成无符号整型问题?,第1张

我测试了一下,你的结果可能写反了。

而且,测试中发现,如果是short、int类型就没有问题,只是unsigned short , unsigned int有问题

查阅资料也没有非常清晰的说明。

我觉得应该算是C的一个BUG。再等高人吧,看看有没有更清楚的大师。

这和linux环境无关了,windows下也是这样的。

虽然8为的char可以表示256个字符,不过明显系统是用有符号数表示它的。超过127的数计算机就理解成负数了。200应该是表示为 -73

然后就是强制转换的问题了,系统先把-73按照补码的格式扩展到4个字节的int型,补码就是"111111111111111111111111101100101",后面几个01是我乱打的,懒得算了....然后用unsigned表示就是4294967240了。

至于LZ文为什么强制转化的unsigned int类型就按int类型来处理了,我只能说编译器就是这么做了,编程的时候还是得小心点。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7421135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存