以下のコードに疑問があります
#include<stdio.h>
int i=6;
int main()
{
int i=4;
{
extern int i;
printf("%d",i); //prints 6
}
printf("%d",i); //prints 4
}
キーワードがコンパイラーを示していることはわかってextern
いますが、変数はどこかにあります。では、問題は、extern
キーワードがグローバルi
変数にアクセスしているのにi
、メイン関数内にある変数にはアクセスしていない理由です。どちらの変数もグローバル変数として中括弧で使用できるため、矛盾があるに違いないと思いました。したがって、externキーワードは、関数の外側にある変数にアクセスしますか、それとも中括弧の外側にある変数にもアクセスしますか。