| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:想不通
只看楼主 加入收藏
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
收藏
 问题点数:0 回复次数:2 
想不通
p=2;q=3;
printf (p>q?"***p=%d":"###q=%d",p,q);
为何输出为###q=2而不是###q=3?
p>q为假,那么应该算“###q=%d"的,那么后面的p,q有什么用处?
2004-07-19 11:25
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

printf (p>q?"***p=%d":"###q=%d",p,q);

这个你要拆分来看

现在你这个语句等同于:

if(p>q) printf("***p=%d",p,q);

else printf("###q=%d",p,q);

请注意你的printf的格式,因为你要输出的是p,q两个数据,但是你在" "里面只定义了一个%d所以系统当然要从第一个开始输出啦,也就是只输出P而不理会q,实际上p和q的值都没被改变


淘宝杜琨
2004-07-19 12:18
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
收藏
得分:0 
真的太谢谢你了。

C语言让我感爱到了计算机的乐趣 目前目标:程序员
2004-07-19 13:14
快速回复:想不通
数据加载中...
 
   



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

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