C 學習筆記 第40課 前置操作符和後置操作符

2021-10-24 09:51:43 字數 782 閱讀 7931

值得思考的問題

在編譯器中反彙編可知,i++和++i的彙編**是一樣的

問題產生的原因:

現代編譯器會對**進行優化

優化會使二進位制**更加高效

優化後的二進位制程式丟失c/c++的原生語義

不可能從編譯後的二進位制程式還原c/c++程式

#include

using

namespace std;

class

test

intvalue()

test&

operator++(

) test operator++(

int)};

intmain()

結果:tt.

1.編譯優化使得最終的可執行程式更加高效

2.前置++和後置++都可以被過載

3.++操作符的過載必須符合原生語義

4.對於基礎型別,前置++與後置++的效率幾乎相同

5.對於類型別,前置++的效率高於後置++

40 前置操作符和後置操作符

下面的 有區別嗎?進入彙編 i i 的值作為返回值,i自增1 i i自增1,i的值作為返回值 include include using namespace std int main int value test operator 過載前置 操作符 test operator int 過載後置 操作...

40 前置操作符和後置操作符

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 值得思考的問題 1 下面的 有沒有區別?為什麼?i i 的值作為返回值,i自增1。i i自增1,i的值作為返回值test.cpp include using namespa...

C 40 前置操作符和後置操作符

void code include using namespace std int main vc 2010 彙編 int i 0 0127136e mov dword ptr i 0 i 01271375 mov eax,dword ptr i 01271378 add eax,1 0127137...