分享

有符号类型与无符号类型之间的转换

 毛豆1111 2015-02-12

void foo(void)

{

     unsigned int a = 6;

     int b = -20;

     (a+b > 6) ? puts("> 6") : puts("<= 6");

}

printf("b = %#x\n",b);

b = 0xffffffec

这个问题测试你是否懂得C语言中的整数自动转换原则;

这无符号整型问题的答案是输出是“>6”。

原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多