1
請看看這段代碼:while循環變量更新
int page;
int stop = FALSE;
while (!stop) {
printf("stop0 %i\n", stop);
if (physmem[fifo_index % opts.phys_pages] == NULL) {
stop = TRUE;
page = fifo_index % opts.phys_pages;
printf("stop1 %i\n", stop);
} else if (physmem[fifo_index % opts.phys_pages]->gc_bit == 0) {
physmem[fifo_index % opts.phys_pages]->gc_bit = 1;
printf("stop2 %i\n", stop);
} else if (physmem[fifo_index % opts.phys_pages]->gc_bit == 1) {
stop = TRUE;
page = fifo_index % opts.phys_pages;
printf("stop3 %i\n", stop);
}
printf("sto4 %i\n", stop);
fifo_index++;
printf("stop5 %i\n", stop);
}
輸出是:
stop0 0
stop1 1
stop4 1
stop5 1
stop0 0 '<<< I dont understand this part'
stop1 1
stop4 1
stop5 1
'<<<< The code exits here!! In the second loop...whyy??'
此代碼是否位於某個外部循環? – Adam 2011-04-16 05:25:50
我注意到你沒有真正複製/粘貼輸出,因爲「sto4」在你的代碼中拼寫錯誤,但在你的輸出中沒有。 – Adam 2011-04-16 05:26:21
你怎麼知道它循環了兩次?你有可能兩次調用這個函數嗎? – 2011-04-16 05:27:39