int a=8,b=7,c=6; if(a<b) if(b>c) {a=c;c=b;} printf("%d,%d,%d\n",a,b,c); 输出结果是 6,7,7 求怎么来的
4个回答
展开全部
如果结果是6,7,7的话第一个if(a<b)后面应该有个分号;如果像你现在这样写的没有分号的话,输出结果应该是8,7,6。因为没有分号的话第二个if语句就成了第一个if语句中的程序段了,第一个if语句不成立,后面的程序段不再执行。如果第一个if后面有分号,第二个if语句是一个单独的条件语句,第一个不成立,接着判断第二个,成立,执行赋值语句。下面是在C++控制台中的程序及执行结果:
1、第一个if不带分号:
int _tmain(int argc, _TCHAR* argv[])
{
int a=8,b=7,c=6;
if(a<b)
if(b>c)
{
a=c;
c=b;
}
cout<<a<<b<<c;
system("pause");
return 0;
}
结果:876请按任意键继续. . .
2、第一个if后加分号:
int _tmain(int argc, _TCHAR* argv[])
{
int a=8,b=7,c=6;
if(a<b); //加分号
if(b>c)
{
a=c;
c=b;
}
cout<<a<<b<<c;
system("pause");
return 0;
}
结果:677请按任意键继续. . .
1、第一个if不带分号:
int _tmain(int argc, _TCHAR* argv[])
{
int a=8,b=7,c=6;
if(a<b)
if(b>c)
{
a=c;
c=b;
}
cout<<a<<b<<c;
system("pause");
return 0;
}
结果:876请按任意键继续. . .
2、第一个if后加分号:
int _tmain(int argc, _TCHAR* argv[])
{
int a=8,b=7,c=6;
if(a<b); //加分号
if(b>c)
{
a=c;
c=b;
}
cout<<a<<b<<c;
system("pause");
return 0;
}
结果:677请按任意键继续. . .
展开全部
首先看第一个if语句,因为a>b,所以执行第二个if语句,又因为b>c,所以执行{a=c;c=b;}这个循环体,这样就有a=6,c=7,而b还是原来的7。。所以最后总输出结果就是6,7,7.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(a<b)//你这里抄错了,这里至少还有一个分号;否则结果不可能是你说的那样。
if(b>c) {a=c;c=b;} //这里b=7>c=6;所以执行a=c=6,所以 a =6,c = 6; c=b=7; 以 b=7 ,c=7(这里c的值再次改变)所以 a=6 , b=7, c=7;
printf("%d,%d,%d\n",a,b,c);
if(b>c) {a=c;c=b;} //这里b=7>c=6;所以执行a=c=6,所以 a =6,c = 6; c=b=7; 以 b=7 ,c=7(这里c的值再次改变)所以 a=6 , b=7, c=7;
printf("%d,%d,%d\n",a,b,c);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主要是这里:if(b>c) {a=c;c=b;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询