A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ximdefangzh 中级黑马   /  2015-9-20 10:29  /  924 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面的代码输出是什么,为什么?(考查有符号类型与无符号类型之间的转换)
void foo(void) {
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts("<= 6");
}
这个问题测试你是否懂得C语言中的整数自动转换原则;
这无符号整型问题的答案是输出是“>6”。
原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。 因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。

3 个回复

正序浏览
不懂,求指教。。。。
回复 使用道具 举报

不懂哎,还没学到这里,求大神指教
回复 使用道具 举报
不懂哎,还没学到这里,求大神指教@
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马