son - reporte de las claves de la argumentacion
¿Por qué la condición de prueba de "para(;;)" tiene éxito? (2)
El lenguaje C no tiene tal cosa como "expresión vacía". Si falta alguna expresión en la sentencia for
, sintácticamente significa que se omite toda la expresión, no que esté allí, sino que esté vacía.
Un ciclo for
con una segunda expresión omitida se repite para siempre porque la especificación de la instrucción for
lo dice. Es decir, es una función dedicada específica for
solo, no algo más genérico.
Additionaly (un nitpick terminológico) solo la segunda expresión es realmente una condición . El primero y el tercero no son realmente "condiciones".
En la medida en que entiendo "para (;;)" no tiene condición inicial, no hay condición de prueba y no hay condición de incremento, y por lo tanto se repite para siempre, tengo curiosidad por saber por qué la condición de prueba tiene éxito en cada ciclo.
¿La expresión vacía ";" evaluar como verdadero en C? ¿O es este un caso especial manejado por los compiladores?
Esto es por la definición de la declaración for
en el lenguaje C. 6.8.5.3/2 "La declaración for
":
Tanto la cláusula-1 como la expresión-3 pueden omitirse. Una expresión-2 omitida se reemplaza por una constante distinta de cero .