#include<stdio.h>
int main()
{
int j=10;
int k=10;
while(j--)
{
while(k--)
{
printf("%d",k);
}
}
//这样会 输出一堆负数是为什么?
// 如果把k--挪到循环体内,把条件改为k>0 就恢复正常了
printf("over");
return 0;
}
回复讨论(解决方案)
while(k--)
{
printf("%d",k);
}
这个循环的终止条件是k--为0,即k为0时,执行之后k的值为-1.
终止之后进入下一次外层循环,然后又开始执行内层循环,此时k=-1,递减无法到0,所以一直循环输出负数。