您的位置:首页 > 其它

无符号整形

2015-08-02 14:56 253 查看
想用一个很有名的面试题来回答你的问题:

void foo(void)

{

  unsigned int a = 6;

  int b = -20;

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

}

   这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 ">6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式 计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: