Una pregunta todo para la diversión/curiosidad: ¿Cómo escribir un bucle for
en C++ que iterar sobre dos valores de una bool
(es decir true
y false
) , utilizando solo operaciones con bool
(es decir, sin conversiones a otros tipos)?Cómo escribir un 'bucle for` sobre los valores bool (falso y verdadero)
El fondo es que quería comprobar cuántas soluciones existe para una ecuación como (A && B) || (!B && !C && !D) == true
, y empecé a escribir algo como for (bool A=false; ??? ; ++A) for (bool B=false; ...)
etc pero inmediatamente quedé atrapado por ???
- es decir, lo que sería la condición para continuar el bucle? Por supuesto que lo reescribí para usar int, y también sé que un bucle do ... while
funcionará, pero me entró curiosidad si alguna vez es posible escribir un bucle for
. Y puesto que lo que no parecen tener una respuesta, decidí pedir :)
Actualización: tenga en cuenta que una variante de "obvia" for(bool A=false; !A; A=true)
sugirió en al menos dos respuestas acaban de ser eliminadas sólo ejecutar una iteración, porque para el segundo, la condición !A
se convierte en false
y el bucle finaliza.
Después de reflexionar, creo que es imposible hacerlo en C++ 03 sin una segunda variable o una construcción basada en un puntero como lo sugiere Dietmar Kühl. La condición debe probarse tres veces en una ejecución deseada, por lo que dos valores de un bool simplemente no son suficientes. Y el bucle do-while funciona porque la primera iteración se ejecuta incondicionalmente, la condición solo se verifica dos veces y, por lo tanto, se puede usar un valor bool para seleccionar entre continuar y salir.
¡Es sorprendente cuán rápido se eliminan las respuestas incorrectas! –
Sí, ¿no lo odias cuando hacen esto? Me parece una buena pregunta. Subí. –
Porque este sitio no es por diversión/curiosidad. Preguntas reales! PD: No, no fui yo, también tengo curiosidad. –