代码之家  ›  专栏  ›  技术社区  ›  Sherifftwinkie

使用C中的块

  •  2
  • Sherifftwinkie  · 技术社区  · 13 年前

    我有这个代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    int a = 5;
    {
        int b = 6;
    }
    printf("%d %d", a, b);
    return 0;
    }
    

    我试图看看使用块会如何影响这一点,但程序不起作用。说b是未申报的,这就是我举的例子。有人知道怎么了吗?或者,这可能是因为当printf不在块中时,int b在块中被声明和初始化而引发的错误吗?

    1 回复  |  直到 13 年前
        1
  •  8
  •   paxdiablo    13 年前

    b 尝试打印它的位置未声明。它的范围从创建扩展到块的末尾,即大括号 之前 这个 printf .

    也许你的意思是这样的:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void) {
        int a = 5;
        int b = 42;  // <<-- Look here! Yes, you! Right here! :-)
        {
            int b = 6;
            printf ("In block: %d %d\n", a, b);
        }
        printf ("Ex block: %d %d\n", a, b);
        return 0;
    }
    

    这有一个 b 在您试图将其打印到块外部的点的范围内。这不是 b 在内部 块,但当结果打印出来时,你会发现:

    In block: 5 6
    Ex block: 5 42