C語言不同增值語句區別

2021-06-09 22:47:04 字數 1046 閱讀 8775

i++;

++i;

i +=1;

i =i +1;

在c語言**中我們經常看到這樣的增值語句,那麼到底哪個語句效率最高呢?

『i++』表示取i的位址,把他裝入暫存器當中然後增加記憶體中i的值。

'++i'表示增加i的內容把它的值放入暫存器中。

i +=1,i=i+1都是賦值操作。在早期編譯器當中其被翻譯成兩條指令,因此大家會認為這樣的效率底下。

但在現代編譯器中gcc,vc等區別已然不存在,就是說以上幾條語句**速度 是一樣的,因為編譯器在為這幾條語句生成中間**時都進行了優化。

下面我們來看一下他們的彙編**:

#include int main(int argc, const char * argv)

上面增值語句llvm編譯器生成的彙編**是:

ltmp5:

movl $0, -20(%rbp)

.loc 1 15 5

movl -20(%rbp), %edi

addl $1, %edi

movl	%edi, -20(%rbp)

.loc 1 17 5

movl -20(%rbp), %edi

addl $1, %edi

movl	%edi, -20(%rbp)

.loc 1 19 5

movl -20(%rbp), %edi

addl $1, %edi

movl	%edi, -20(%rbp)

.loc 1 21 5

movl -20(%rbp), %edi

addl $1, %edi

movl	%edi, -20(%rbp)

.loc 1 22 5

不同程式語言的區別

學習內容 指標 記憶體 資料型別 語言性質 理解計算機系統結構 解決問題 效能 適用物件 計算機類的專業,做計算機底層的設計和開發 學習內容 物件 跨平台 執行時 語言性質 理解主客體關係 解決問題 跨平台 適用物件 軟體類專業 學習內容 物件 多型 繼承 語言性質 理解主客體關係 解決問題 大規模...

C語言 if語句

案例 輸入任意三個整數num1 num2 num3,求三個數中的最大值。案例 輸入任意三個整數num1 num2 num3,求三個數中的最大值。功能 說明if 語句的格式。main 程式運 況如下 please input three numbers 11,22,18 the three numbe...

C語言 for語句

案例 求1 100的累計和。案例 求1 100的累計和。程式功能 求1 100的累計和 main 程式運 況如下 sum 5050 案例 求n的階乘n n 12 n 程式功能 求n!main 程式運 況如下 input n 5 5 120在3條迴圈語句中,for語句最為靈活,不僅可用於迴圈次數已經確...