while usando resueltos for ejercicios ejemplos ciclo c++ for-loop scope initializer variable-declaration

c++ - usando - ¿Puedo declarar variables de diferentes tipos en la inicialización de un ciclo for?



ejemplos usando while en c++ (5)

Lo que está prohibido es el final de un enunciado con una coma como lo haces en int a = 0, short ...

Si desea usar esta notación, entonces la variable muss tiene el mismo tipo int i = 0, s = 0;

Esta pregunta ya tiene una respuesta aquí:

¿Por qué este código de C ++ no se compila en VS2010?

for ( int a = 0, short b = 0; a < 10; ++a, ++b ) {}

mientras que este hace:

short b = 0; for ( int a = 0; a < 10; ++a, ++b ) {}

¿Está prohibida la declaración de dos variables de diferentes tipos dentro del inicializador for-loop? Si es así, ¿cómo puedes evitarlo?


Nada que ver con el bucle for . Esto tampoco se compila si escribe int a = 0, short b = 0; fuera de cualquier bucle.
Entonces la respuesta es: siempre está prohibido declarar dos variables de diferentes tipos en una sola declaración.

Edit: Oh, para el pedante, me doy cuenta de que puede declarar un tipo base y un tipo de puntero en la misma instrucción, por ejemplo, un int y un puntero int, por lo que serían tipos diferentes, sí.
Hm, eso me hace pensar. En un entorno de 32 bits, un puntero sería de 4 bytes, al igual que un int, por lo que podría usar short a = 0, * b = 0; y luego lanzar b a un int. Hm ...


No puede declarar una variable en el estado while del (el paso de comprobación).

for ( a = 0, short b = 0; a < 10; ++a, ++b ) {}

eso no es ninguno de los trabajos.


Sí, eso está prohibido. De la misma manera, no puede declarar variables de diferentes tipos en una declaración de declaración ( edit : módulo los modificadores de declaradores que menciona @MrLister). Puedes declarar las estructuras

for (struct { int a = 0; short b = 0; } d; d.a < 10; ++d.a, ++d.b ) {}

C ++ 03 código:

for (struct { int a; short b; } d = { 0, 0 }; d.a < 10; ++d.a, ++d.b ) {}

Por supuesto, cuando todos son 0 , puede omitir los inicializadores por completo y escribir = { } .


Solo puede declarar un tipo para la declaración. Entonces el segundo código es utilizable.