Tengo curiosidad por saber por qué sucede esto.C++ Evaluación booleana
int main()
{
bool answer = true;
while(answer)
{
cout << "\nInput?\n";
cin >> answer;
}
return 0;
}
comportamiento esperado: 0 - programa sale, 1 - Solicita de nuevo, Cualquier distinto de cero entero distinto de 1 - Solicita de nuevo
comportamiento real: 0 - Como se esperaba, 1 - Como era de esperar, Cualquier distinto de cero entero distinto de 1 - bucle infinito
de http://www.learncpp.com/cpp-tutorial/26-boolean-values/
One additional note: when converting integers to booleans,
the integer zero resolves to boolean false,
whereas non-zero integers all resolve to true.
¿Por qué el programa entra en un ciclo infinito?
+1 para una pregunta bien planteada.El booleano es un arenque rojo; el verdadero problema tiene que ver con la forma en que funciona la entrada de flujo. Pruebe lo mismo con un int, y luego ingrese una letra y vea lo que sucede ;-) – Cameron
Quizás estoy equivocado, pero cuando toma la entrada desde la línea de comando ... ¿no se convierte en una cadena? convirtiendo entre cadena y booleano? Que podría arruinar las cosas .... –
Cameron hace un buen punto: un personaje se puede convertir a un número entero. Por ejemplo, '' A '== 65', pero pasa lo mismo. – chris