Mehrere Indexe in einer Schleife verarbeiten, vorherige Definition notwendig? - GELÖST
-
Ich möchte gerne mehrere Indexe in einer Schleife verarbeiten.
Stimmt es, daß man diese vorher definieren muß?
Normalerweise kann man einen Index ja auch in der Schleife definieren.Beispiel:
Falsch wäre:for (int i=0,int j=99;i<j; ++i, --j)Richtig wäre :
int i,j; for (i=0,j=99; i<j; ++i, --j)
-
Nein du kannst nur nicht
int i=0,int j=99;schreiben.int i=0,j=99geht glaub' ich.
-
Ja, denn
int i=0;j=99;wäre auch aussserhalb einer Schleife falsch.
int i=0,j=99;hingegen wäre richtig, sowohl ausserhalb als auch innerhalb einer Schleife.
-
redrew99 schrieb:
Stimmt es, daß man diese vorher definieren muß?
- Was nicht definiert ist, kann nicht benutzt (im Sinne einer Verarbeitung) werden.
- Grundsätzlich gilt, etwas so lokal wie möglich zu halten und etwas so spät wie möglich zu definieren.daraus folgt:
for(int i=0, u=1, y=2...;...;...) {}
-
Manchmal muss ich zwei Typen von Variablen vor einer for-Schleife deklarieren.
Ideal wärefor (int i=0, u=1, object y;...;...) {}Gugelmoser schrieb:
- Grundsätzlich gilt, etwas so lokal wie möglich zu halten und etwas so spät wie möglich zu definieren.
Um das zu gewährleisten müsste ich so etwas machen:
{ // nur so ein schnell erfundenes Beispiel list< int >::iterator x = erstlist.begin(); list<object>::iterator y = zweitlist.begin(); for (;...;...){} }Aber weil ich das zu umständlich finde, verzichte ich auf die geschweiften Klammern drumrum.
Ich finds dumm, dass
int i=0, int j=99;nicht erlaubt ist.
-
aussserhalb schrieb:
Um das zu gewährleisten müsste ich so etwas machen:
{ // nur so ein schnell erfundenes Beispiel list< int >::iterator x = erstlist.begin(); list<object>::iterator y = zweitlist.begin(); for (;...;...){} }Aber weil ich das zu umständlich finde, verzichte ich auf die geschweiften Klammern drumrum.
Zwei Klammern zu machen finde ich nun nicht wirklich umständlich, vor allem, da die meisten Entwicklungsumgebungen dir die } bereits hinterherwerfen.
aussserhalb schrieb:
Ich finds dumm, dass
int i=0, int j=99;nicht erlaubt ist.Was ist daran dumm? Verstehe ich jetzt nicht.