c++问题vc6.0中关于while循环【要说明原因,文献引用来源】

来源:百度知道 编辑:UC知道 时间:2024/06/25 15:34:26
#include <iostream.h>
void main()
{
int a, y;
a=10; y=0;
do{ a+=2; y+=a;
cout<<"a="<<a<<",y="<<y<<endl;
if (y>20) break;
}while (a=14);
}
为什么执行结果是
a=12,y=12
a=16,y=28

do{ a+=2; y+=a;
cout<<"a="<<a<<",y="<<y<<endl;
if (y>20) break;
}while (a=14);
}

循环第一次:
a初值为10,a+=2,a变为12;y+=a,因为y的初值为0,所以此时y的值为12. 输出:
a=12,y=12
循环条件:
a=14,注意:这是条赋值语句,因为a不为const,所以这句话可以执行,a赋值为14了,循环条件a=14成功,所以返回真值true,可以继续循环.
循环第二次:
此时a被赋值为14,a+=2,a变为16,y+=a,之前的y为12,所以此时y的值为28.输出:
a=16,y=28

if (y>20) break; 这句成立,跳出循环.

a=10; y=0;
第一次进入
a=a+2 ->12
y=y+a ->12
while (a=14); -> a 赋 14

a=14,y=12
第二次进入
a=a+2 ->14+2 -〉16
y=y+a ->12 + 16 -〉28

我楼上的哥们是正解,是被break退出的
第一次是a=12 ,y=12
然后在while 里a = 14;了,继续走循环体
a+=2 a=16 了
y=12+16>20了自然走break了
这个文献。。。我还真找不到了

第一次循环,a+=2; 结束后a=12, y+=a;结束后y=12。这时候y小于20,所以继续循环。这时到达while(a=14);,在这里a=14永远是对的,它只是一个赋值语句而已,不管a以前是多少,下次循环开始前又变成14。
第二次的循环,这时a=14,y=12。a+=2;结束后a=16,y=12+16=28。这时y的值大于20,推出循环。所以就