这题C++为什么选B不选A呢? 难道第一个if条件判断里a++使a加一然后再执行下面的语句吗
展开全部
int a = 10, b = 0;
if( a++>10 && b++>=0 ) //a++,此时a为10,显然a>10不成立,对于&&运算语句,运算顺序从左至右,当前一个结果为false时,后面的语句不再执行。
//即经过该判断后,a = 11, b = 0; 继续判断下面的else if语句.
{
cout<<a<<'#'<<b<<endl;
}
else if( a>10 && b--<=0 ) //a = 11 > 0程式成立,执行右边的语句b--<=0,此时b = 0,明显成立,执行其大括号内语句
{
cout<<a<<'*'<<b<<endl; //输出a、b的值,此时a = 11, b = -1,结果为:11*-1,选择B
}
else
{
cout<<a<<'&'<<b<<endl;
}
更多追问追答
追问
噢好的
也就是说如果是while(i--)这种类型的无论判断条件是真是假都会减掉1是吗
展开全部
a++>10因为++在后,所以是先执行a>10这个,然后a再自增1
如果换成++a>10就是先执行a自增1,然后再a>10这个判断了
如果换成++a>10就是先执行a自增1,然后再a>10这个判断了
更多追问追答
追问
然后后来a就会变成11进行elseif里的计算了是吗
追答
对,第一个if先判断,两个都不成立,然后全部自增,到else if里面因为自增过变成11了,就成立了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不,第一个if语句是错误的,因为a++是先赋值再计算的,也就是说a++等于10
追答
所以第一个if错误
直接看else
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询