2010-08-01 16 views
3

Pourquoi la ligne suivante génère-t-elle des erreurs?Virgule dans la boucle

for(int i = 0, int pos = 0, int next_pos = 0; i < 3; i++, pos = next_pos + 1) { 
    // … 
} 

error: expected unqualified-id before ‘int’ 
error: ‘pos’ was not declared in this scope 
error: ‘next_pos’ was not declared in this scope 

Le compilateur est g ++.

+3

Connexes: http://stackoverflow.com/questions/3337126/in-c-why-cant-i-write-a-for-loop-like-this-for-int-i-1-double-i2 -0 qui semble faire référence à un précédent http://stackoverflow.com/questions/2340073/multiple-counter-problem-in-for-loop qui semble être assez bon pour cette * question *. – dmckee

Répondre

13

Vous ne pouvez avoir qu'un seul type de déclaration par déclaration, si vous avez seulement besoin d'un int:

for(int i = 0, pos = 0, next_pos = 0; i < 3; i++, pos = next_pos + 1) 
+2

Et il est décevant qu'il n'y ait aucun moyen de faire certaines déclarations 'const' et certaines d'entre elles non. – seh

+6

votre dernier; devrait être un, – Juliano

+15

@seh: 'pour (struct {int quelque chose; const int; float veut;} data = {5, 10, 3.14f}; ...; ...)' – GManNickG

3

Dans un programme normal:

int main() 
{ 

int a=0,int b=0,int c=0; 
return 0;  

} 

ne marchera jamais et ne sont pas acceptés.

C'est ce que vous essayez réellement de faire dans la boucle for!