查看: 1488|回复: 1
打印 上一主题 下一主题

嵌入式C语言面试题每天一题(12)

[复制链接]
跳转到指定楼层
沙发
发表于 2014-9-16 17:53:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

12 . 下面的代码输出是什么,为什么?


void foo(void)
{ unsigned int a = 6;
int b = -20;
(a+b > 6) puts("> 6") : puts("<= 6");
}


这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。


回复

使用道具 举报

板凳
发表于 2014-9-16 21:29:57 | 只看该作者
好东西顶顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表