1. 程式人生 > 其它 >【C語言】i++和++i的區別是什麼?哪個效率高?為什麼?

【C語言】i++和++i的區別是什麼?哪個效率高?為什麼?

技術標籤:嵌入式筆試面試題庫C語言習題c語言i++++i

寫這篇文章主要的目的就是想把看到的一些好的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;
}