2016-10-17 4 views
-6

だから、 'i'はC++のユニバーサルカウンターのようです。すべてのforループのように、人々は 'i'を再初期化します。私は尋ねる必要があります、なぜ彼らは単に私はグローバルに初期化しないのですか?私はまだ各ループで再定義する必要があるので、なぜ混乱が生じるのか分かりません。なぜ人々は私をグローバルに初期化しないのですか?

それはちょうどこのように思える:

#include <iostream> 
int i=0; 

int main() 
{ 
    for (i=0;i<3;i++) 
    { 
     std::cout << i << "\n"; 
    } 
    for (i=0;i<5;i++) 
    { 
     std::cout << "hello" << "\n"; 
    } 

    return 0; 
} 

は読みやすく、そしてより書き込みが高速です:

#include <iostream> 

int main() 
{ 
    for (int i=0;i<3;i++) 
    { 
     std::cout << i << "\n"; 
    } 
    for (int i=0;i<5;i++) 
    { 
     std::cout << "hello" << "\n"; 
    } 

    return 0; 
} 
+0

「私はグローバルに初期化するのはなぜですか?質問ではありませんか? – iNeedToMakeBetterQuestions

+3

その問題の問題ではなく、少なくとも問題なく、 – Treycos

+3

ループの外側に 'i'が定義されていると、' i'が偶発的に使用される可能性があります。すべてのループでiを初期化することは、そのループを上回るインデックスであるという意図を示します。 – Danh

答えて

10

素晴らしいアイデア!

int i; 

void print_twice(const std::string& s) 
{ 
    for (i = 0; i < 2; i++) 
    { 
     std::cout << s; 
    } 
    std::cout << std::endl; 
} 

int main() 
{ 
    for (i = 0; i < 5; i++) 
    { 
     print_twice("hello"); 
    } 
} 

か...それをしない:ここで

は "hellohello" を5回印刷し、プログラムの? (奇妙なオルガンの音楽が演奏され、カラスは遠くのサイレンが鳴ります)

+3

誰かがライブを見たい場合:https://ideone.com/UiWgHP –

関連する問題