Gültigkeitsbereich einer for-Schleife
-
Hab mir gerade CButtonST angeschaut, da gibt es eine BCMenu.cpp, die hat folgenden Quellcode:
23: int num = pSubMenu->GetMenuItemCount(); 24: for(int i = num-1;i>=0;--i) pSubMenu->RemoveMenu(i,MF_BYPOSITION); 25: for(i = m_MenuList.GetUpperBound();i>=0;i--) { 26: if(m_MenuList[i]->nID==(UINT)pSubMenu->m_hMenu) { 27: delete m_MenuList.GetAt(i); 28: m_MenuList.RemoveAt(i); 29: break; 30: } 31: } 32: delete pSubMenu;Studio 2005 meckert, dass bei der 2. for-Schleife (Zeile 25) i unbekannt ist. Studio 6 kann das gut ab und meckert nicht. Was ist denn nun richtig? Die Variable i verliert doch nach Zeile 24 ihre Gültigkeit... oder? Weitere Definitionen von i habe ich nirgendwo gefunden.
-
Früher galt, dass in for-Schleifen deklarierte Variablen ins darüberliegende Scope gehören (so wie VS6 das macht), heute gilt, dass sie nur innerhalb der for-Schleife sichtbar sind.
-
Hi,
for(i = m_MenuList.GetUpperBound();i>=0;i--)is doch klar...
for([b]int i[/b] = m_MenuList.GetUpperBound();i>=0;i--)die leibe syntax

-
.filmor schrieb:
Früher galt, dass in for-Schleifen deklarierte Variablen ins darüberliegende Scope gehören (so wie VS6 das macht), heute gilt, dass sie nur innerhalb der for-Schleife sichtbar sind.
Das ist mir neu!
Mir ist neu, dass es mal anders war, als heute - sprich innerhalb des Scopes gültig. Ok, das erklärt einiges...
-
der skopus von variablen wie for(int i) ist immer nur in der Schleife.
War das mal anders?
Das macht doch durchaus auch sinn, da sonst alles ambig wird.
und du sagst es doch selbst,Die Variable i verliert doch nach Zeile 24 ihre Gültigkeit... oder?
genau deswegen ist sie bei der zweiten for schleife auch unbekannt und muss mit int neu definiert werden.
mein Grundsatz
Da wo du es definierst gilt es!Zumal es sehr verwirrend wird wenn man den Quelltext durchsieht. Und was wenn du auf ein anderes System umsteigst, andere Compiler benutzt... Probleme über Probleme. Sind ja nur drei zeichen
