从底层剖析i++和++i的区别与相同点
生活随笔
收集整理的這篇文章主要介紹了
从底层剖析i++和++i的区别与相同点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大家第一時間想到i++與++i的區別就是一個是先加再用,一個是先用再加。
相同點:
#include<stdio.h>
int main()
{int a = 10;a < 20;a++;printf("%d", a);return 0;
}
上述代碼打開反匯編,顯示出來的機器碼是這樣的
而當我們輸入代碼
#include<stdio.h>
int main()
{int a = 10;a < 20;++a;printf("%d", a);return 0;
}
它所體現出來的反匯編機器碼是這樣的
會發現在a++與++a沒有賦值對象的時候(也就是說單純的個體a++與++a)是等價的,都是將這個值賦值給CPU寄存器中,然后加1來進行計算的。
不同點:
#include<stdio.h>
int main()
{int a = 10;int b = 0;a < 20;b=++a;printf("%d", b);return 0;
}
它的反匯編機器碼:
而:
#include<stdio.h>
int main()
{int a = 10;int b = 0;a < 20;b = a++;printf("%d", b);return 0;
}
反匯編機器碼:
總結:
在a++與++a有賦值對象的時候確實一個是先加后用另一個是先用后加。
沒賦值對象的時候兩者是等價的!
歡迎大家評論區討論交流,下期再見!
總結
以上是生活随笔為你收集整理的从底层剖析i++和++i的区别与相同点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: # 编程之路的开启
- 下一篇: 电脑主机淘宝买多少钱外面买多少钱?