【发布时间】:2013-07-26 00:00:43
【问题描述】:
我对 c++ 中 for 循环内的变量范围有疑问。 我有一个变量 j 计算某个条件,如下面的代码所示
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);
现在我想在下一个for循环的条件下使用相同的j如下
for (int ii = 0; ii<j; ii++ ){
vectorname(ii,0) = functionname(alphaSol_filt(ii,0),betaSol_filt(ii,0));
}
这就是问题发生的地方。 这变成了一个无限循环,并且 ii 超出了界限。奇怪的是,当我用以下内容替换第二个循环时:
for (int ii = 0; ii<j; ii++ ){
std::cout << j <<std::endl;
}
它确实可以正常工作。但是,如果我改变任何东西,那么它就会变成一个无限循环,我不知道会发生什么
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。你还没有初始化
j,所以你得到了不确定的值。 -
感谢您的回复。但我使用的 j 值与我在第一行初始化的值相同。此外,如果我在第一个 for 循环之外输出 j 的值,我会得到正确的值。
-
int j;未初始化j。int j = 0;确实如此。 -
你能告诉我们函数
alphaSol_filt和betaSol_filt吗?