Heim >Backend-Entwicklung >C++ >Können Sie Variablen unterschiedlichen Typs in einer C-For-Schleifeninitialisierung deklarieren?
Variablen verschiedener Typen in einer For-Schleifeninitialisierung deklarieren
In C ist es nicht direkt möglich, Variablen verschiedener Typen innerhalb der zu deklarieren Initialisierungskörper einer for-Schleife. Dies liegt daran, dass der Schleifeninitialisierungsteil einen einzelnen Ausdruck erwartet, der nur Variablen desselben Typs definieren kann.
Betrachten Sie das folgende Beispiel:
for (int i = 0, j = 0; ...) { // ... }
Dieser Code definiert zwei ganzzahlige Variablen i korrekt und j. Wenn Sie jedoch versuchen, innerhalb der Initialisierung eine Ganzzahl und ein Zeichen zu deklarieren, führt dies zu einem Kompilierungsfehler:
for (int i = 0, char c = 'a'; ...) { // ... }
Eine technische Problemumgehung
Allerdings nicht In praktischen Szenarien empfohlen, gibt es eine technische Problemumgehung, um verschiedene Typen innerhalb der for-Schleifeninitialisierung zu deklarieren. Dabei geht es darum, eine einzelne Struktur zu erstellen, die die gewünschten Typen enthält, und diese Struktur dann als Initialisierungsausdruck zu verwenden:
struct MyStruct { int a; char b; }; for (MyStruct s = { 0, 'a' }; s.a < 5; ++s.a) { std::cout << s.a << " " << s.b << std::endl; }
In diesem Beispiel erstellen wir eine MyStruct mit zwei Mitgliedern, a (eine Ganzzahl) und b ( ein Charakter). Die Schleifeninitialisierung setzt die MyStruct-Instanz s so, dass a gleich 0 und b gleich „a“ ist. Die Schleife wird dann fortgesetzt, solange s.a kleiner als 5 ist.
Das obige ist der detaillierte Inhalt vonKönnen Sie Variablen unterschiedlichen Typs in einer C-For-Schleifeninitialisierung deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!