中科因仑“3+1”工程特种兵精英论坛

标题: 嵌入式C语言面试题每天一题(12) [打印本页]

作者: 还你一世界    时间: 2014-9-16 17:53
标题: 嵌入式C语言面试题每天一题(12)

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
好东西顶顶




欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4