易百教程

do-while循环块多个作用域

在以下代码中,有两个名为count的变量。
在do-while循环块内部,局部变量将“隐藏”main()块中存在的count变量版本。
编译器将假定当使用count时,表示在当前块中声明的那个。在do-while循环中,只能访问本地版本的count变量。循环块内的printf()显示本地count值,该值始终为1
退出循环后,外部count变量变为可见,最后一个printf()将循环中的最终值显示为6

示例代码

#include <stdio.h>

int main(void)
{
    int count = 0; // 在外部块中声明
    do
    {
        int count = 0;  // 这是另一个名为count的变量
        ++count;        // 这适用于内部计数
        printf("count = %d\n", count);
    } while (++count <= 5); // 这适用于外部计数

    printf("count = %d\n", count); //内部 count 已经销毁,这是外部count变量
    system("pause");
    return 0;
}

执行上面示例代码,得到以下结果:

count = 1
count = 1
count = 1
count = 1
count = 1
count = 1
count = 6