这个程序什么时候结束?简单的c++程序!在线等待!

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:27:26
int y=290,b[10];
for(int i=0;y;i++)
{
b[i]=y%16;
y=y/16;
}
for(int j=0;j<i;j++)
cout<<b[j];
cout<<endl;
cout<<"y="<<y<<endl;
这个程序什么时候结束呢?我知道结果是什么!第一行输出是221;第二行输出是y=0;我也知道为什么是这个结果!但是就不知道为什么到这里就结束了呢?麻烦高人解答!!谢谢诶!

for(int i=0;y;i++)
何时结束,是判断中间这个 布尔式 的值为FALSE时结束。
y=290 / 16 = 18 第一次, Y为非0 即为TRUE所以继续
y=18 /16 =1 第二次,Y为非零 即为TRUE所以继续
y=1/16=0 第三次 Y为零, 即为FALSE,跳出。

注意这一句:y=y/16;

每次y都除16取整,
当y值小于16时,y/16就等于0,
这个时候for(int i=0;y;i++) 的判断条件“y”就为0,
退出循环

for(;;)循环第二项为条件判断,如果为假(默认值=0)时则退出循环