Dites que je veux imprimer un message en C cinq fois en utilisant un Le message n'est pas imprimé 5 fois, mais si je ne mettez pas le point-virgule là-bas? P > p> pour code> boucle. Pourquoi si j'ajoute un point-virgule après la boucle comme ceci:
6 Réponses :
for (i=0;i<5;i++){}
Semicolon est une déclaration légitime appelée déclaration null em> * sup> Cela signifie "ne rien faire". Puisque la boucle Le code suivant p> est interprété comme suit: p> Comme vous pouvez le constater, l'opération qui est répétée est voir K & R , Section 1.5.2 P> P> pour code> exécute une seule opération (qui pourrait être un bloc ci-joint dans le point-virgule {} code>) est traité comme le corps de la boucle, entraînant le comportement que vous avez observé .
pour (i = 0; i <5; i ++) code> li>
{ code> li>
} code> li>
ul> ; code>, pas le printf code>.
p>
* sup>
Le point-virgule n'est pas un "opérateur". Il termine une "déclaration", et elle est valable pour que la déclaration ne contienne rien. Certains compilateurs avertissent de cela parce que c'est une erreur courante. Bretelles vides {} code> est le moyen préféré de ne rien faire.
Semicolon est un ponctuateur i> mais pas un opérateur i>.
@ams s'il vous plaît voir une édition. J'avais tort de l'appeler un opérateur, c'est une déclaration (au moins selon K & R)
@ouah s'il vous plaît voir une édition. J'avais tort de l'appeler un opérateur, c'est une déclaration (au moins selon K & R)
@Sergeykalinichenko Il y a des gens répétitifs et il y a des personnes répétitives. :-)
La déclaration consistant à seulement le Par exemple, ceci est valide: ; code> jeton est appelée la déclaration null em> et cela ne fait que ... rien. if (bla)
;
else
;
Ce code ci-dessous imprimera "Bonjour" 5 fois ..
for(i=0;i<5,printf("Hello\n");i++);
En fait, non qui n'imprime pas Bonjour 5 fois; Il imprimera bonjour un nombre indéfiniment élevé de fois. C'est parce que la condition est i <5, printf ("Hello \ n"); code> et l'opérateur de la virgule évalue son LHS ( i <5 code>) et ignore le résultat, puis évalue le RHS ( printf ("Hello \ n") code>), qui retourne 6 car il écrit 6 caractères à la sortie standard; Parce que 6 est vrai (ce n'est pas zéro), la boucle continue, indéfiniment. Avec mes options de compilateur par défaut pour GCC (y compris -werror code>), le code ne compile pas: Erreur: l'opérande de gauche de la virgule n'a aucun effet [-werror = valeur inutilisée] code>.
De nombreux compilateurs affichent une erreur de syntaxe lorsque vous mettez un point-virgule après un point-virgule après une boucle pour la boucle, mais selon le compilateur GCC (Linux) ou Dev-CPP, vous pouvez mettre un point-virgule après une boucle pour boucle et ne vous montrera aucune erreur.
Par exemple p> ou p> de l'exemple ci-dessus, il est clair si nous mettons des accolades vierges ou un point-virgule après boucle qui signifie que nous n'avons pas encore entré de variables. p> viens maintenant à votre question.
Si vous souhaitez imprimer bonjour cinq fois, vous devez écrire votre programme comme P> for(int i=0;i<5;i++)
{
printf("hello");
}
#include <stdio.h>
int main() {
int sum = 0; // variable initialization
int k = 1;
//for(int i = 1; i <= 10; i++);
{
sum = sum + k;
k++;
}
printf("The value of sum is %d", sum);
return 0;
}
if there is a semicolon after for loop then code in the curly braces is treated as regular body and will be executed normally.In the above program I have commented the for loop and it does the same thing as putting ; at the end of the for loop. It prints the sum as 1 because code inside the curly braces executes once.
'{' est en ligne avec commenté la boucle. C'est la raison pour laquelle il n'a pas compilé. Veuillez essayer maintenant avec le code mis à jour.