Maison >développement back-end >C++ >Pouvez-vous déclarer des variables de différents types dans une initialisation de boucle C For ?
Déclaration de variables de différents types dans une initialisation de boucle For
En C , il n'est pas directement possible de déclarer des variables de différents types dans le corps d’initialisation d’une boucle for. En effet, la partie d'initialisation de la boucle attend une seule expression, qui ne peut définir que des variables du même type.
Considérez l'exemple suivant :
for (int i = 0, j = 0; ...) { // ... }
Ce code définit correctement deux variables entières i et j. Cependant, si vous tentez de déclarer un entier et un caractère lors de l'initialisation, cela entraînera une erreur de compilation :
for (int i = 0, char c = 'a'; ...) { // ... }
Une solution technique
Bien que ce ne soit pas le cas recommandé dans des scénarios pratiques, il existe une solution technique pour déclarer différents types dans l'initialisation de la boucle for. Cela implique de créer une seule structure contenant les types souhaités, puis d'utiliser cette structure comme expression d'initialisation :
struct MyStruct { int a; char b; }; for (MyStruct s = { 0, 'a' }; s.a < 5; ++s.a) { std::cout << s.a << " " << s.b << std::endl; }
Dans cet exemple, nous créons une MyStruct avec deux membres, a (un entier) et b ( un personnage). L'initialisation de la boucle définit l'instance MyStruct s pour qu'elle ait a égal à 0 et b égal à « a ». La boucle continue ensuite tant que s.a est inférieur à 5.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!