#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,所以一直循环输出负数。