a a b和a b的區別

2021-06-21 13:59:23 字數 500 閱讀 2505

本文的測試環境是vs2008,測試語言是c#。

以前我一直認為a=a+b  a+=b沒有什麼區別,網上的一些人也認為這兩句沒有什麼很大的區別。但是今天在用c#中checked關鍵字檢查溢位的程式中發現用前者編譯不能通過,後者可以,帶著這個疑問,我又查了一些資料,終於有了乙個合理的解釋,如果有錯誤,希望大神指正。

問題是這樣的,byte型別的資料取值範圍是0-255,在c#中定義兩個byte型的變數,分別賦值100 200,求和,顯然他們的和溢位了,於是要用checked語句檢查溢位,我發現,當**寫成a+=b的時候,a的輸出結果是44,顯然,溢位影響了輸出值,但是**寫成a=a+b根本就編譯通不過,錯誤資訊是不能把byte隱式的轉化為int。我認為這個例子在側面印證了a+=b比a=a+b的執行更快。

a+=b是把b記憶體單元的值直接加到了a的記憶體單元,a=a+b是把a b記憶體單元的值分別拿出來,相加以後存到暫存器,再由暫存器存回a的記憶體單元,中間有了暫存器就存在了隱式轉化的問題,而顯然前者的執行速度更快,這就是我對於這個問題的理解。

a a b和a b的區別

首先,高興啊高興,因為今天問小葉這個問題,他說沒有區別,哈哈,但是呢,我還是查到了區別,吼吼 因為,是他疏忽了。哦哦 其次,謝謝武讓的講解。下面進入正題 1 對於同樣型別的a,b來說 兩個式子執行的結果確實沒有什麼區別。但是從編譯的角度看吧 武讓說的 a b 執行的時候效率高。2 對於不同型別的a,...

a a b 與 a b 的區別

1 對於同樣型別的a,b來說 兩個式子執行的結果確實沒有什麼區別。但是從編譯的角度看吧 武讓說的 a b 執行的時候效率高。2 對於不同型別的a,b來說 2.1 不同型別的兩個變數在進行運算的時候,我們經常說到的是型別的轉換問題。這裡,記住兩點 一 運算過程中,低精度的型別向高精度型別轉換。二 如果...

Java中 a a b 和 a b 的區別

千萬不要放過任何乙個小的知識點 乙個這麼小的點也可以拿來寫一篇文章 哈?首先網傳 a b 的效率會比 a a b 的效率要高一點,但是我驗證了一下,好像並沒有這回事。執行 1000000000 次 a a 1的時間和 a 1的時間幾乎差不多,而且有時候前者快,有時候後者快。這裡就不討論效率高低這個區...