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.