首先执行++a<=10||b-->=20,a自增1后为11,则++a<=10为假,b为20,则b-->=20为真(b的自减运算在之后执行,故b的输出值将会是19)
至此++a<=10||b-->=20的结果为真,程序不再继续执行||c++的内容,故c的值不发生变化
最终输出结果为 11 19 30 1
if不是函数是c++的一条语句而已
①if(条件)
{分支体}
这种
分支结构
中的分支体可以是一条语句,此时“{
}”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0)
x=-x
②if(条件)
{分支1}
else
{分支2}
这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根
分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:
d=b*b-4*a*c
if(d>=0)
{x1=(-b+sqrt(d))/2a
x2=(-b-sqrt(d))/2a
printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2)
}
else
{r=-b/(2*a)
i
=sqrt(-d)/(2*a)
printf(“x1=%8.4f+%8.4fi\n”r,
i)
printf(“x2=%8.4f-%8.4fi\n”r,i)
}
③嵌套分支语句:其语句格式为:
if(条件1)
{分支1};
else
if(条件2)
{分支2}
else
if(条件3)
{分支3}
……
else
if(条件n)
{分支n}
else
{分支n+1}
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内.
我刚才用VC++ 2010 测试了一下,果然是你说的这个答案。我调式了一下,看了一下运行的过程。下面给你解释一下:其实关键是这句:
i=l=f=d=8/5
这里等号总是先算最右边, 8/5 两个整数相除,默认结果也是整数,所以就是 1.0。这个1.0依次赋值给左边的那些数,并且会自动类型匹配。所以就会出现你看到的结果了。
要想得到 1.6,可以改成这样:
i=l=f=d=(double)8/5
结果就是1,1,1.6,1.6 了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)