Variable Creation and Scope

In writing a basic introductory module about C++, I came upon the topic of “instant variable creation” within for loops and noticed to my dismay that the following code worked without errors:

for (int i = 0; i < 20; i++)  {     cout << "Hello World i == " << i << endl;  }  cout << i;  //should produce an error?

In Java, the scope of i would have been limited to the loop itself. What's the deal? I'm using Microsoft's Visual C++ IDE, with the latest service pack installed.

A standard compliant compiler should issue an error message in this case because the scope of i is limited to the for loop exclusively. However, in pre-standard C++ the scoping rules were different: the variable would remain in scope even after the for loop finished. Visual C++ still adheres to the older convention. This is a well known bug.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Related Posts