雅乐网

计算机技术、学习成长

编程 » C/C++ » c语言表达式中数值类型的自动转换

c语言表达式中数值类型的自动转换

ANSI C规定,当执行算术运算的时候,如果操作数类型不同,就会自动转换。

下面的例子中,if语句在signed int和unsigned int之间测试,a被升级为unsigned int类型,-1转换成无符号数是一个非常大的正整数。

搜狗截图20140425145910

要修正这个问题,只要对b进行强制类型转换

搜狗截图20140425150200

对无符号类型的建议

尽量不要在代码中使用无符号类型,以免增加不必要的复杂性。尤其是不要因为要表示的数不存在负数(例如年龄 个数等)而使用它。

尽量使用int那样的有符号类型。

只有在使用位段和二进制掩码时才可以使用无符号数。

在表达式中尽量使用强制类型转换,避免编译器自动选择。

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/unsigned_int_compare_with_int.html

上一篇:

下一篇:

我要评论

验证码*: 0 + 5 =