C语言问题:为什么这个会死循环


#include
int main()
{
    int i=1;
for(i=1;i<=2;i++)
    while(i)
    {
        i/=2;
        printf("%d",i);
    }

    return 0;
}

为什么这个程序会死循环啊

因为你在第9还修改了i值,最终while循环的结束条件是i=0。同时i又是for循环的循环变量,你反复将i修改为0,for循环不就结束不了了么

i=1
-> while中输出i=0
-> i++ i=1<2
-> 继续while...

while 循环0结束,但是你for循环又将i得值变为1 就这样一只循环下去变成死循环