我正在编写一个使用c ++利用fltk的程序。我已经在for语句中指定了条件。但是,在调试之后,发现j值未初始化,因此变为5。在for循环之外,它已初始化为1。但是,仍然执行i = 2和j = 5而不通过for循环。我认为for循环中的j不变,这是什么问题?
int i = 1;
int j = 1;
for (i = 1; i <= 4; i++)
{
for(j=1; j<=4; j+=1) // i added BP in here.
{
rose.push_back(new Rose{ Point{150*i, 150*j}, i, j, 60 });
rose[rose.size() - 1].set_color(Color{ i * 4 + j });
rose[rose.size() - 1].draw_lines();
win.attach(rose[rose.size() - 1]);
}
}
首先遇到BP时,i = 1,j = 1。这是第二次遇到BP时的结果。enter image description here
这里没事。
j
在内部循环结束之后短暂地是5(也就是说,它的终止条件!它是由最后一个j+=1
引起的),它将一直保持这种状态,直到引入下一个j = 1
为止。同一循环的化身。
由于您在循环开始的行上放置了一个断点,所以我想您只是看到了。