标题:C语言基础题,求助
只看楼主
拾柒17
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-8-8
结帖率:100%
已结贴  问题点数:20 回复次数:3 
C语言基础题,求助
void foo(void)
{
   unsigned int a=6;
   int b=-20;
   (a+b>6)?puts(">6"):puts("<=6");//put为打印函数
}
问代码输出是什么?
我不太懂的地方是答案说:
  输出值是“>6”。因为a+b这里做了隐式的转换,把int转化为unsigned int.编译器就会把b当作一个很大的正数。
搜索更多相关主题的帖子: C语言 基础 unsigned int puts 
2019-08-08 16:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
首先你觉得 unsigned int + signed int 的结果应当是什么类型?
不管你怎么回答,都得存在类型提升的情况。假设你的回答是“结果是TYPE类型”的话,要么得将unsigned int转化为TYPE类型,要么得将signed int转化为TYPE类型,甚至有可能两者都需要转换。

打开 https://zh.
然后看其中的“整数提升”那节
2019-08-08 16:30
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:10 
回复 楼主 拾柒17
下面这个帖子的楼主遇到跟你一样的问题。
https://bbs.bccn.net/viewthread.php?tid=495997&page=1#pid2706271

这个帖子里面他提了两个问题,5楼才是你想看的结果。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-08-08 16:38
拾柒17
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-8-8
得分:0 
回复 2楼 rjsp
学习到了,收货满满,谢谢
2019-08-11 10:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496285-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.257835 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved