Puede, por supuesto, poner una declaración de variable en un bucle for:¿Por qué no puedo poner una declaración de variable en la porción de prueba de un ciclo while?
for (int i = 0; ...
y me he dado cuenta de que puede hacer lo mismo en el if y switch, así:
if ((int i = f()) != 0) ...
switch (int ch = stream.get()) ...
pero cuando trato de hacer lo mismo en un bucle while:
while ((int ch = stream.get()) != -1) ...
el compilador (VC++ 9.0) no le gusta en absoluto.
¿Es esto comportamiento obediente? ¿Hay alguna razón para ello?
EDITAR: He encontrado que puedo hacer esto:
while (int ch = stream.get() != -1) ...
pero debido a las reglas de prioridad, que ha interpretado como:
while (int ch = (stream.get() != -1)) ...
que no es lo que quiero.
gcc no lo hace permítanme declarar una variable en la declaración "if", en realidad –
¿No quiere decir mientras (int ch = (stream.get()! = -1)) en el último ejemplo? –
como una opción para evitar esto, es posible que desee considerar el operador de coma: while (int ch, (ch = stream.get())! = -1) {// hacer cosas aquí} – workmad3