Dado que C no tiene bool , ¿cuál es la variable adecuada para colocar en lugar de true en un algoritmo que usa
do { // ... } while(true);???
¿Debería un programador de C apropiado hacer
do { // ... } while(1);¿O hay una variable específica reservada para significar " algo que no es cero/NULO "?
Por lo general, hoy en día veo
while(1) { ... }Solía ser común ver
for(;;) { ... }Todo consigue el punto a través.
Su pregunta no es realmente sobre bool (que tiene C moderno si #include <stdbool.h> ), se trata de la mejor manera de escribir un ciclo infinito.
Los modismos comunes son:
while (1) { /* ... */ }y
for (;;) { /* ... */ } Este último parece un poco oscuro, pero está bien definido. Se puede omitir cualquiera de las tres expresiones en un encabezado for ; si se omite la segunda expresión, que controla cuándo continúa ejecutándose el bucle, el valor predeterminado es verdadero.
while (1) es probablemente el método más sencillo, pero algunos compiladores pueden advertir sobre una condición que siempre es cierta. for (;;) probablemente evita eso, ya que no hay una expresión (explícita) sobre la que advertir.
Personalmente, no usaría un ciclo do / while , porque la condición está en la parte inferior.
Hay formas más complicadas de escribir un ciclo infinito ( while (1 + 1 == 2) et al, pero ninguna de ellas realmente vale la pena.
Tanto while (1) como for (;;) serán perfectamente claros para cualquier persona con una buena comprensión de C.
Si estás usando c89:
Cree una definición booleana:
typedef int bool; #define true 1 #define false 0O constantes:
/* Boolean constants. */ #define TRUE 1 #define FALSE 0Esto le da al int un significado para usted.
O (como se menciona en otra parte aquí) si usa c99:
#include <stdbool.h>Mi experiencia con las universidades últimamente es que requieren que uses c89.