在C++程序中,这样的程序会出现什么结果,求解。

inta=8,b=4,c=5;cout<<(a%b?b:c);cout<<a%b?b:c;... int a=8,b=4,c=5;
cout<<(a%b?b:c);
cout<<a%b?b:c;
展开
 我来答
cjiajiazhuiqiu
2013-08-17 · 超过14用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:33万
展开全部
下面是输出格式:
5
0
解答:首先我们不考虑输出符<<。我们来看两个cout后的表达式,一个加了括号,另一个没有加。我们分析一下两个重要符号 取余符号% 和 判断符号?:,这里说一下左结合的取余符号优先级比 ?:要高得多,所以要先运算取余符号。然后看<<输出符与?:的优先级,<<的优先级是高于?:的。
所以综上,第一个加了括号的,先是取余,然后做比较判断?:,取c值,输出为5。第二个没加括号,还是先取余,但是<<的优先级是高于?:的,所以取完余就直接输出了,所以输出为0

不信,你自己跑一下代码就知道了。
人生若梦多好
2013-08-17 · TA获得超过146个赞
知道答主
回答量:32
采纳率:100%
帮助的人:25.4万
展开全部
你没有c++编译器吗?如果有就好了,可以自己看清楚结果。如果需要可以问我要。
首先你知道a?b:c运算符的意思吗?意思就是?前面的条件如果为真,则表达式的值就为b,若为假表达式的值就为c.
再补充一点,在一般的计算机中,0表示假,其余的都表示真。
那么我们来看具体代码。
?前面的表达式是a%b,即求余,它返回的是用b除a的余数。那么,这段代码中a%b是多少呢?0,所以条件为假,表达式的值为c的值,即第一行输出为5.

第二行代码是判断运算符的优先级。C语言中 一般来说 算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符, 但 C语言中有个"!" 运算符,是逻辑非运算符, 它的优先级是比 算术运算符 高的。(这段话借鉴的)
%算个算数运算符,而?:是个条件运算符,三元的,优先级很低,所以第二行代码的效果和第一行是一样的。
输出为5
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
beiexa
2013-08-17 · 超过14用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:26.6万
展开全部
都是输出5

a%b 为0 因为可整除,没有余数

这个三目运算式可按照这样来理解

if(a%b)
cout<<b;
else
cout<<c;

如果a%b不为0 则输出b 否则输出c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式