Que pour (;;) et while (); signifie en C

Je regarde des exemples de codes et j’ai vu quelqu’un faire cela

for (;;) { // ... } 

Est-ce que cela équivaut à while(1) { } ?

Et que fait while(condition); faire? Je ne comprends pas la raison de mettre ';' au lieu de {}

    Oui,

     for(;;){} 

    est une boucle infinie

    Et que fait while (condition); faire? Je ne comprends pas la raison de mettre ‘;’ au lieu de {}

    Eh bien, votre question est ce qui se passe si vous mettez ou ne mettez pas de point-virgule après que tant que condition? L’ordinateur identifie le point-virgule comme une instruction vide.

    Essaye ça:

     #include int main(void){ int a = 5, b = 10; if (a < b){ printf("True"); } while (a < b); /* infinite loop */ printf("This print will never execute\n"); return 0; } 

    tandis que juste boucle si une seule déclaration jusqu’à ce que la condition soit fausse. Il n’est pas nécessaire que ce soit une déclaration composée (cette chose: {}), cela peut être n’importe quelle déclaration. ; est une déclaration qui ne fait rien.

     while(getchar() != '\n'); 

    en boucle jusqu’à ce que vous frappiez enter, par exemple. Bien que ce soit une mauvaise pratique car cela encombrerait le fil; l’ajout d’un appel à une méthode de veille dans la boucle est préférable.

    for(;;) et while(1) sont tous deux des boucles infinies, et comstacknt les mêmes opcodes:

     L2: jmp L2 

    Ce qui signifie qu’il n’y a pas de différence de vitesse, car le déassembly est exactement le même.