【C語言】i++和++i的區別是什麼?哪個效率高?為什麼?
阿新 • • 發佈:2021-01-04
寫這篇文章主要的目的就是想把看到的一些好的C語言習題摘錄下來。
目錄
從執行效率分析
理論上,i++的執行效率比++i的執行效率要高。
++i不用生成臨時變數,而i++要生成臨時變數。
這個會因編譯器有所區別,有的編譯器會對這個流程進行優化。
例如直接彙編相應的程式碼,結果如下:
可以看到它們的執行效率是差不多的。
從執行邏輯分析
i++表示先賦值後加1;i++實現的是,運算結束之後進行自加運算,換句話說這一句跑到分號之後才會有自加效果。
++i表示先加1再賦值;++i正好相反,是在這一句的一開始就進行自加,然後將結果帶入運算。
相關習題
#include "stdio.h" #include "string.h" int a() { static int i =0; if(i>=1) { return ++i; } return i++; } int main() { int A1 = 0; int A2 = 0; int A3 = 0; A1 = a(); A2 = a(); A3 = a(); printf("%d,%d,%d\n",A1,A2,A3); getchar(); return 0; }