#include<stdio.h>
int main(){
int a=10;
{ printf("%d",a);
int a=20;
printf("%d",a);
}
printf(" %d",a);
return 0;
}
Output:10 20 10
上記のコードでは、変数 a (内側のブロック内) の可視性がそのブロック内でのみスコープを持つことを理解しているため、その特定の出力が得られます。しかし、そのブロックの外側で宣言されている変数 a は、内側のブロック内でもスコープを持つ必要があります...したがって、どうすれば再度入力できるのでしょうか。int a=20;
「a の再定義」や「前の宣言のがここにあった」。私が使用する場合のように
int b=10;
int b=15;
私の2番目の問題はこれです
void main() {
static int a=10;
{
printf("%d ",a);
static int a=20;
printf("%d",a);
}
printf(" %d",a);
}
「a の再定義」のようなエラーが発生しない理由についての前のコードと同じ疑問は別として、これはこのコードに関連する私の疑問です。
上記のコードについては同じ結果Output: 10 20 10
が得られますが、私が期待していたのは
10 20 20
static int a が 20 に再初期化されると、内側のブロックで、ブロックを終了した後でも同じ値になるべきではないということですか? 静的変数のスコープはプログラム全体に及ぶためです。