¿Por qué es esto no válidamúltiple Contador problema Con el bucle For
for(int i = 0, int x = 0; some condition; ++i, ++x)
y esto es
int i, x;
for(i = 0, x = 0; some condition; ++i, ++x)
Gracias
¿Por qué es esto no válidamúltiple Contador problema Con el bucle For
for(int i = 0, int x = 0; some condition; ++i, ++x)
y esto es
int i, x;
for(i = 0, x = 0; some condition; ++i, ++x)
Gracias
versión correcta es
for (int i = 0, x = 0; some condition; ++i, ++x)
esto funciona:
for(int i = 0, x = 0; some condition; ++i, ++x)
es como una declaración de variables:
int i, j; // correct
int i, int j; // wrong, must not repeat type
De hecho, es una declaración de variable. Para ser precisos, ambos son 'simple-declaration's – MSalters
Debido a que una declaración de variables (como int x
) no es una expresión y el operador coma (,
) sólo combina expresiones.
Esto expone una triste limitación del bloque de inicialización for loop. , es decir, todas las variables inicializadas en el bloque de inicialización deben ser del mismo tipo. –
Casi: 'for (int x, * y; ...' – MSalters
¡Cuidado, el ',' en la declaración 'int x, y;' NO es el operador de coma! – fredoverflow
¿Por qué debería ser válido? Es una estructura sintácticamente sin sentido. ¿Qué estabas tratando de decir con eso?
La primera parte del encabezado for
es una declaración. El
int i = 0, int x = 0
no es una declaración válida. No se compilará en for
por la misma razón por la que no se compilará en cualquier otro lugar en el programa
int i = 0, int x = 0; // Syntax error
Cuando tenga que declarar dos objetos de tipo int
en una declaración, lo hace de la siguiente manera
int i = 0, x = 0; // OK
lo mismo se puede utilizar en for
for(int i = 0, x = 0; some condition; ++i, ++x)
(Pero cuando tiene que declarar dos variables de tipos diferentes, no se puede hacer con una declaración y, por lo tanto, no se pueden declarar ambos en for
al mismo tiempo. Al menos uno de ellos tendrá que ser declarada antes for
)
Esto es legal:.
for(int i = 0, x = 0; condition; ++i, ++x);
int x, int y no es una forma legal de la declaración de variables;
cuando se necesita para declarar dos variables de diferentes tipos, no se puede hacer por una declaración
Hackety piratear Hack:
for (struct {int i; char c;} loop = {0, 'a'}; loop.i < 26; ++loop.i, ++loop.c)
{
std::cout << loop.c << '\n';
}
;-)
¡Wow! Nunca escuché esto antes. – sharptooth
+ 1 para "Hackety hackear hackear" –
Eso parece un buen truco. ¿Comentarías algún detalle extraño? Si reemplazo el tipo de variable i con algo como std :: vector
Implementé este enfoque para calcular la diferencia diagonal. Aquí estoy calculando la suma de Antidiagonal.
for(int i=0,j=n-1; i<n,j>=0;i++,j--){
sum_right += a[i][j];
}
posible duplicado de [¿Puedo declarar variables de diferentes tipos en la inicialización de un bucle?] (Http://stackoverflow.com/questions/8644707/can-i-declare-variables-of-different -types-in-the-initialization-of-a-for-loop) –
@Mechanicalsnail: El presunto duplicado es más nuevo que esta pregunta. ¿Por qué cerrarías esto? – bitmask
@bitmask: La otra pregunta tiene una explicación un poco más de lo que estamos tratando de hacer, y tiene más respuestas de votos arriba. Pero que cerrar es una decisión de juicio. –