为什么do数字(数字> 10)会产生无限循环?

cer*_*oel 0 c int loops initialization while-loop

根据我的理解,while应该结束循环,导致int数字"in"循环应该用0初始化它.或者我错了吗?但它给了我一个无限循环,打印零.我用gcc编译它并尝试用gdb调试它.对我来说没有意义,因为while不会停止循环.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int number = 20;
    do
    {
        int number = number / 2;
        printf("%d ", number);
    } while (number > 10);
}
Run Code Online (Sandbox Code Playgroud)

Vel*_*Vel 8

number每次在循环中创建新的,仅在循环内可见,并且与循环外的那个无关.删除intint number = number / 2;