J'ai un problème concernant la portée des variables à l'intérieur pour les boucles en C++. J'ai une variable j qui compte une certaine condition comme on le voit dans le code ci-dessouscondition pour le comportement impair de la boucle C++
int j;
for (int i=0; i<8; i++){
if ((betaSol(i,0) >= -HalfPi) && (betaSol(i,0) <= HalfPi)){
// j gives size of new vector where beta is within bounds
j++;
}
}
Eigen::MatrixXd vectorname(j,1);
Maintenant, je veux utiliser le même j dans l'état de la prochaine boucle comme suit
for (int ii = 0; ii<j; ii++){
vectorname(ii,0) = functionname(alphaSol_filt(ii,0),betaSol_filt(ii,0));
}
ici est où le problème se produit. Cela devient une boucle infinie et ii sort des limites. La chose étrange est que lorsque je remplace la deuxième boucle avec ce qui suit:
for (int ii = 0; ii<j; ii++){
std::cout << j <<std::endl;
}
cela fonctionne correctement. Cependant si je change quelque chose, alors il devient une boucle infinie et je ne sais pas ce qui se passe
Bienvenue dans Stack Overflow. Veuillez lire la page [About] bientôt. Vous n'avez pas initialisé 'j', vous obtenez donc des valeurs indéterminées avec lesquelles travailler. –
Merci pour votre réponse. Mais j'utilise la même valeur j que j'ai initialisée en 1ère ligne. De plus, si je publie la valeur de j en dehors de la première boucle for, j'obtiens la valeur correcte. –
'int j;' n'initialise pas 'j'. 'int j = 0;' fait. –