¿Por qué puedes usar varios puntos y coma en C?

En CI podemos hacer lo siguiente:

int main() { printf("HELLO WORLD");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; } 

¡y funciona! ¿Porqué es eso?

Mi idea personal: los puntos y coma son un indicador de NO OPERACIÓN (de Wikipedia), tener una cadena gigante de ellos sirve para la misma idea que tener uno y decirle a C que una statement ha terminado.

Un punto y coma termina una statement … los puntos y coma consecutivos representan declaraciones sin operación (como usted dice). Considerar:

 while (x[i++] = y[j++]) ; 

Aquí, todo el trabajo se realiza en la condición de prueba de bucle, por lo que es deseable una statement vacía. Pero, las declaraciones vacías se permiten incluso cuando no hay un bucle de control.

¿Por qué?

Bueno, muchos usos del preprocesador pueden expandirse a algún código C real, o eliminarse, en base a algunas definiciones anteriores, pero dadas …

  MY_MACRO1(); MY_MACRO2(); 

… el preprocesador solo puede reemplazar el texto MY_MACROX() , dejando los puntos y coma al final, posiblemente después de una statement vacía. Si el comstackdor rechazara esto, sería mucho más difícil usar el preprocesador, o las llamadas del preprocesador serían menos como las llamadas de función sin preprocesador (tendrían que generar puntos y coma dentro de la sustitución, y el llamador tendría que evitar un punto y coma final). al usarlos), lo que haría más difícil que la implementación sustituya aparentemente las macros inteligentes por funciones con fines de rendimiento, depuración y personalización.

C permite declaraciones nulas. Pueden ser útiles para cosas como bucles vacíos:

 while (*d++ = *s++) ; // null statement. 

Acabas de crear una serie de ellos.

También permite declaraciones no bastante nulas como:

 0; 1+1; 

Ambos contienen expresiones, pero sin efectos secundarios, por lo que realmente no hacen nada. Se les permite, aunque un comstackdor puede advertir sobre ellos.

Un comstackdor decente normalmente no generará ningún código para ninguno de los anteriores (la mayoría ni siquiera con la optimización desactivada, y no puedo imaginar uno que con la optimización activada).

Dos puntos y coma juntos hacen una statement vacía. A C no le importa tener declaraciones vacías, no generan ningún código.

Debido a que un punto y coma identifica el final de una statement en C y en su caso, más puntos y coma identifica más declaraciones vacías … No hay nada de malo, son solo declaraciones vacías.

Los puntos y comas son terminadores de línea, lo que significa que dicen que los códigos han llegado al final de la línea, LUEGO, haga la siguiente línea de códigos.

Una prueba es que puede escribir sus códigos en una sola línea, excluyendo las directivas.

 main() { cout << "ENTER TWO NUMBERS"; cin >> a; cin >> b; cout << "The sum of two numbers are" << a+b; << return 0;} 

Lo que podría significar main () {cout << "INTRODUZCA DOS NÚMEROS" [ENTONCES] cin >> a [ENTONCES] cin >> b [ENTONCES] cout << "La suma de dos números es" << a + b [ENTONCES ] << volver 0 [ENTONCES]}

así que si tuvieras que colocar varios puntos y coma, es como, ENTONCES, ENTONCES, ENTONCES, ENTONCES, y tu idea personal es correcta.