Puis-je écrire simplementDéclaration et initialisation de variable pour la boucle
for (int i = 0; ...
au lieu de
int i;
for (i = 0; ...
en C ou C++?
(et la variable i
accessible dans la boucle uniquement?)
Puis-je écrire simplementDéclaration et initialisation de variable pour la boucle
for (int i = 0; ...
au lieu de
int i;
for (i = 0; ...
en C ou C++?
(et la variable i
accessible dans la boucle uniquement?)
Son valable en C++
Il était pas légal dans la version originale de C.
Mais a été adoptée dans le cadre de C dans C99 (lorsque certaines fonctionnalités C++ étaient en quelque sorte backportées à C)
L'utilisation gcc
gcc -std=c99 <file>.c
La variable est valide à l'intérieur de l'instruction for et de l'instruction qui est bouclée. S'il s'agit d'une instruction de bloc, elle est valable pour l'ensemble du bloc.
for(int loop = 0; loop < 10; ++loop)
{
// loop valid in here aswell
}
// loop NOT valid here.
Oui et oui. Mais pour C, apparemment votre compilateur doit être en mode C99.
Oui, c'est légal en C++ et en C99.
Il est parfaitement légal de le faire en C99 ou C++:
for(int i=0; i<max; ++i)
{
//some code
}
et son while
équivalent est:
{
int i=0
while(i<max)
{
//some code
++i;
}
}
Les boucles 'for' et' while' ne sont pas tout à fait équivalentes. Considérez ce qui se passe si "du code" inclut une instruction "continue". – jamesdlin
Je ne faisais que clarifier la portée de 'i'. Vous pouvez toujours faire attention qu'il y ait un '++ i' avant d'appeler' continuer', mais sinon, vous avez un point valide. – rubenvb
Acutally for(int i=0;i<somevalue;i++)
a toujours été foré en moi comme le moyen privilégié pour définir une boucle for en c et C++.
Tant que "i" n'est accessible que dans votre boucle, vous devez faire attention aux noms de variables que vous utilisez. Si vous déclarez "i" en tant que variable en dehors de la boucle et que vous l'utilisez pour quelque chose d'autre, vous allez provoquer un problème lors de l'utilisation de cette même variable pour un compteur de boucles.
Par exemple:
int i = 10;
i = 10 + PI;
sera changé automatiquement lorsque vous appuyez sur la boucle et i = déclarer 0
Puis-je écrire simplement
Oui.
(et la volonté variable i soit accessible dans la boucle uniquement?)
Dépend du compilateur et sa la version. AFAIK, dans les compilateurs modernes, je ne suis accessible qu'à l'intérieur de la boucle. Certains anciens compilateurs permettaient i d'être également accessible en dehors de la boucle. Certains compilateurs permettent d'accéder à i en dehors de la boucle et vous avertissent d'un comportement non standard.
Je pense (mais je ne suis pas sûr à ce sujet), que "i en dehors de la boucle" a été utilisé quelque part dans VC98 (Visual Studio 6, qui AFAIK, avait aussi quelque part une variable "i" définie globalement cela pourrait conduire à un comportement extrêmement intéressant). Je pense que que (microsoft) compilateurs fait quelque part autour de 2000..2003 a commencé à imprimer "extensions non standard utilisées" pour l'utilisation de i en dehors de la boucle, et finalement cette fonctionnalité a complètement disparu. Il n'est pas présent dans le studio visuel 2008.
Ceci est probablement passé selon une norme mais je ne peux pas donner un lien ou une citation pour le moment.
si vous utilisez côté à la variable de la boucle, il sera changer à chaque fois lors de l'initialisation à l'intérieur de la boucle
int i = 0;
for(int e = 0; e < 10; e++)
{
i = e;
}
maintenant je valeur change chaque fois
Essayer ceci aurait probablement exigé moins d'effort que de poster cette question à ce sujet –
@Don: mais donnerait la mauvaise réponse si vous deviez utiliser un vieux compilateur pré-standard croustillant (comme certaines personnes semblent encore le faire). Il est préférable de demander, ou de regarder dans la norme, que de faire confiance au comportement de votre compilateur particulier. –