1. 程式人生 > >C語言 ++i和i++

C語言 ++i和i++

今天範了個很小的錯誤,導致從佇列中獲取的值不正確,排查了很長時間才找到錯誤原因. 為吸取教訓,現記錄如下:

錯誤的程式碼

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); }