使用代码块来缩小变量作用域

今天突发奇想,想到这么一个写法

#include <stdio.h>

int main() {
    char c = 'A';
    {
        int a = 1;
        printf("%d\n", a);
        printf("%c\n", c);
    }
    {
        int a = 2;
        printf("%d\n", a);
        printf("%c\n", c);
    }
    return 0;
}

编译一下,居然能够编译通过,跑一下,得到输出

1
A
2
A

这个东西有什么用呢,说实在,我也没有见过别人有这种写法,我自己也是脑子一抽筋想到的。

最明显的作用就是缩小变量的作用域,可以避免冲突,另外的话,这种用来区分不用作用的代码块,有助于一个长函数中对代码的阅读,不过,这要求两个代码块之间的变量几乎互相独立,真要这样的话,这个长函数干嘛不拆啊,囧。

One thought on “使用代码块来缩小变量作用域

  1. 突然想到,这种写法,结合 RAII 形式的互斥锁,是可以达到规划临界区的目的的

Leave a Reply

Your email address will not be published. Required fields are marked *