For-Schleife

Padawan

Erfahrenes Mitglied
Hallo Leute,

hab eine kleine frage zu for-Schleifen in C++.

C++:
int to = 0;
int from = 6;
for (; to<enOceanPacket.HeaderDataLength ; to++,from++) {
    enOceanPacket.Data[to] =  proto_buffer[from];
    crc = u8CRC8Table[crc ^ proto_buffer[from]];
}

Muss in der Schleifenbedingung eigl. nicht die Variablen to und from nicht mit einem ; getrennt werden, oder hat es eine andere bedeutung als, dass die variablen, für sich selbst inkrementiert werden?

Grüße
Padawan
 
Hi

eine for-Schleife hat immer die Form
C++:
for( INIT ; CONDITION ; EXEC )
{
    CONTENT;
}
mit genau zwei ";" und macht das Selbe wie
C++:
INIT;
while(CONDITION)
{
    CONTENT;
    EXEC;
}
ich nehme einmal an, wie eine while-Schleife funktioniert ist klar
INIT und EXEC können auch leer gelassen werden, und das wär für die Schleife eigentlich alles.

Dein Code
C++:
int to = 0;
int from = 6;
for (; to<enOceanPacket.HeaderDataLength ; to++,from++) {
    enOceanPacket.Data[to] =  proto_buffer[from];
    crc = u8CRC8Table[crc ^ proto_buffer[from]];
}
ist das Gleiche wie
C++:
int to = 0;
int from = 6;
while (to<enOceanPacket.HeaderDataLength) {
    enOceanPacket.Data[to] =  proto_buffer[from];
    crc = u8CRC8Table[crc ^ proto_buffer[from]];
    to++,from++;
}

Anweisungen mit "," statt ";" zu trennen ist ganz unabhängig von der Schleife:
a) "Ausgeführt" wird jeder Teil, also hier werden to und from beide erhöht,
und wenn Teile davon Funktionsaufrufe sind werden sie eben ausgeführt.
In der Hinsicht ist es gleich wie bei einer Abtrennung mit ";".
b) Wenn man den Wert des ganzen Ausdrucks verwendet,
zB. zum Zuweisen zu einer Variable oder Ausgeben oder...
C++:
int i = bla1,bla2,bla3;
(sowas geht bei ";" nicht) dann werden zwar eben alle Teile ausgeführt,
aber nur der letzte wird für die Zuweisung/Ausgabe/... verwendet (also bla3).
C++:
bla1;
bla2;
int i = bla3;
 

Neue Beiträge

Zurück