C語言 ++i和i++
阿新 • • 發佈:2018-12-18
今天範了個很小的錯誤,導致從佇列中獲取的值不正確,排查了很長時間才找到錯誤原因. 為吸取教訓,現記錄如下:
錯誤的程式碼
item = arg->queue.queues[++arg->queue.tail];
平常寫for(int i =0; i < 100;++i)習慣了,所以獲取佇列值時也順手寫成++arg->queue.tail.
正確的程式碼
item = arg->queue.queues[arg->queue.tail++];
注意事項
演示程式碼
/*
* array[++index] ++在前表示先index = index+1,然後再從陣列index的位置獲取值
* array[index++] ++在後表示先從陣列index的位置獲取值,然後再index = index+1
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int queues[4] = {1,2,3,4};
int index=0;
//假設期望獲取的值為1,也就是queues[0]的值,
//正確的用法,列印的值為1
fprintf(stdout,"%d\n",queues[index++]);
//錯誤的用法,列印的值為2
index=0;
fprintf(stdout,"%d\n",queues[++index]);
return (EXIT_SUCCESS);
}