2013-03-13 40 views
2

我有這樣的代碼使用塊用C

#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是在塊內聲明和初始化的嗎?

回答

8

是的,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 
+0

啊,是的,我現在看到!謝謝! – Sherifftwinkie 2013-03-13 03:01:06