爲什麼下面的代碼沒有提供錯誤,因爲我多次定義爲int i = 10?此外,爲什麼我的迭代變量不受影響?爲什麼沒有衝突?輸出是1010101010.怎麼樣?變量的多重定義
#include<stdio.h>
int main()
{
int i;
for(i=0;i<5;i++)
{
int i=10;
printf("%d",i);
i++;
}
}
爲什麼下面的代碼沒有提供錯誤,因爲我多次定義爲int i = 10?此外,爲什麼我的迭代變量不受影響?爲什麼沒有衝突?輸出是1010101010.怎麼樣?變量的多重定義
#include<stdio.h>
int main()
{
int i;
for(i=0;i<5;i++)
{
int i=10;
printf("%d",i);
i++;
}
}
自動變量只有在範圍{
,其中}
他們居住活着。
你在你的程序命名爲i
兩個變量:
i
在main
宣稱擁有整個main
功能的範圍。for
循環內的i
僅在循環內有作用域。注意,當您參考i
裏面的for循環內i
影子在main
宣佈的i
。
int i=10;
for loop
只在循環內部可用,它不知道它是否先前在循環外定義。
代碼塊中定義的變量範圍僅限於該塊。 即,
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
你的情況,你每次初始化內我到10和打印,那麼你增加內我,所以每次打印值時間內我的,你聲明並初始化到10
這是因爲可變的變量
範圍範圍內處於向{}
你的第一個int我將通過main()而活着,而int裏面的for只會在for循環中存在。
現在爲什麼輸出是1010101010 ???
簡單的解釋是當你輸入看你的新我會等於10,你打印它然後我++使它11.再次下一次我= 10你打印它,我++使它11這繼續爲主)INT I < 5這樣的五倍,你會得到1010101010.
希望它可以幫助.....
怎麼樣的輸出?爲什麼是1010101010? –
@PrithviRaj,你增加內部'i'然後它被破壞並重新創建下一次迭代。因此,印刷的「i」全部是五次。 – chris
@PrithviRaj:在for循環中,編譯器只能看到循環內聲明的'i'。 –