C语言习题求解第13题,求解析
2个回答
展开全部
这道题答案不对,先看最外面的if(a>b>c)
关系预算符具有从左到右的结合性所以这个表达式等价于 if((a>b)>c) 因为a>b满足,所以if((a>b)>c) 等价于 if(1>c)这个条件不满足,所以执行else里面的语句
else语句里又是一个if else
先判断if((c–1>=d)==1)
算数运算符的优先级比关系运算符的优先级高 所以,先计算c-1 结果为2
再计算 2>=2 满足,结果为1
再判断1==1 满足所以执行一个条件后的语句 就是输出d+1 结果应该是3
关系预算符具有从左到右的结合性所以这个表达式等价于 if((a>b)>c) 因为a>b满足,所以if((a>b)>c) 等价于 if(1>c)这个条件不满足,所以执行else里面的语句
else语句里又是一个if else
先判断if((c–1>=d)==1)
算数运算符的优先级比关系运算符的优先级高 所以,先计算c-1 结果为2
再计算 2>=2 满足,结果为1
再判断1==1 满足所以执行一个条件后的语句 就是输出d+1 结果应该是3
展开全部
#include "stdio.h"
void main(){
//gcc下编译未通过,也许你们考试用的是VC,
如果未通过,答案就选d,
int a=5,b=4,c=3,d=2;
if(a>b>c)
//a=5,b=4,c=3,d=2;a>b为真取1,1>c为假取0.
{printf ("%d\n"),d;}
//if(a>b>c)为假,此语句不执行。
else {if((c-1>=d)==1)
//a=5,b=4,c=3,d=2;(c-1>=d)为真取1.1==1为真。
{printf("%d\n",d+1);}
//if((c-1>=d)==1)为真,该语句执行。d+1=3.
else
{printf("%d\n",d+2);}}
return 0;
//结束,如果把上面的void main()改为int main(),
在GCC环境下,运行可以通过,结果为3,答案选B.见下图
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询