2010-09-04 178 views
1
#include <iostream> 
using namespace std; 

int main() { 
    int i; 
    for(i=0; i <= 11; i+=3) 
     cout << i; 
    cout << endl << i << endl; 
} 

輸出爲:0 3 6和9,然後一旦退出循環的12 的我的環路內部和外部地址出現在同一個C++:for循環的範圍?

我需要知道的是:是的我for循環中的內容與在for循環外部初始化的I相同,因爲變量i在我創建的for循環之前首次初始化?

回答

4

它解相同的 'I' VAR

#include <iostream> 
using namespace std; 

int i = 0; 

int main() { 
    int i; 
    for(i=0; i <= 11; i+=3) 
     cout << i; 
    cout << endl << i << endl; 
    cout << endl << ::i << endl; 
} 

i被12

:: i是0

+0

這對我來說更有意義,謝謝。 – John 2010-09-04 00:29:23

+0

很好解釋! – 2010-09-04 04:00:36

11

是的,循環內的i與循環外部的i相同,因爲您只聲明瞭一次。

如果你希望它是不同的(我強烈建議反對,你應該選擇不同的變量不同的名字),你可以重新聲明我在for循環的一些原因:

for (int i = 0; i ... 
1

只有一個'我'變量。你只是在foor循環中分配一個值。

1

這裏只有一個變量存在 - 是的,循環內的i與退出循環後輸出的變量相同。然而,變量只是初始化爲循環的一部分,而不是之前。

2

爲了創建在C++(一個新的對象(變量)以及在C)你必須明確定義它。在你的程序中,你只有一個變量定義 - int i;。這意味着那裏只有一個變量i。不管任何「for循環的範圍」或其他任何其他i都沒有機會。

0

形式的for-loop

for (init condition; expression) statement 

完全等同於:

{ 
    init 
    while (condition) 
    { 
     statement 
     expression; 
    } 
} 
與您的代碼

所以:

int i; 
    { 
     i=0; 
     while (i <= 11) 
     { 
      cout << i; 
      i += 3; 
     } 
    } 
    cout << endl << i << endl; 
} 

你現在可以告訴? Andrey puts it best:如果你沒有定義它,它不存在。