-1

i が int i=10 として複数回定義されているため、次のコードでエラーが発生しないのはなぜですか? さらに、反復変数 i が影響を受けないのはなぜですか? 競合がないのはなぜですか?出力は 1010101010 です。

#include<stdio.h>
int main()
{
    int i;
    for(i=0;i<5;i++)
    {
        int i=10;
        printf("%d",i);
        i++;
    }
}
4

4 に答える 4

0

this is because of scope of variable

scope of variable lies within { to }

your first int i will be alive through out the main() while the int i inside for will be alive inside for loop only.

now why the output is 1010101010???

the simple explanation is when you enter for look your new i will be equal to 10, you print it then i++ makes it 11. again next time i = 10 you print it and i++ makes it 11 this continues for main() int i < 5 so five times you will get 1010101010.

hope it helps.....

于 2012-12-12T07:29:31.373 に答える
0

自動変数は、それらが存在するスコープ内でのみ有効{です。プログラムで名前が 付けられた 2 つの変数があります。}
i

  • i宣言された in にmainは、関数全体のスコープがありますmain
  • ループのi内側には、forループの内側にのみスコープがあります。

ifor ループ内で参照すると、内部で宣言されたi シャドウが.imain

于 2012-12-12T05:56:03.137 に答える
0

int i=10;infor loopはループ内でのみ使用でき、ループ外で以前に定義されていたかどうかはわかりません。

于 2012-12-12T05:58:59.187 に答える
0

コードのブロック内で定義された変数のスコープは、そのブロックのみに限定されます。すなわち、

int i=1;//outer i
{
int i=2;//inner i
printf("%d"&i);// this ll print 2
}
printf("%d"&i);// this ll print 1

も同じです。つまり、

int i=1;
for (int i=0;i<4;i++){
printf("%d",&i); // print 0 1 2 3 
}
printf("%d",&i); // print 1

あなたの場合、インナー i を 10 に初期化して出力するたびに、インナー i をインクリメントしたので、宣言して 10 に初期化したインナー i の値を毎回出力します。

于 2012-12-12T05:59:59.783 に答える