1樓:**的可樂
兩者無論從表來面上的結果或者實際自**執行過程都沒有區別,但是他們和a++有一部分割槽別。
a=a+b或者a+=b過程;
假如a的值存放在0x33445566記憶體地址中,那麼程式先從該地址取出a的值放入暫存器x,將b放入暫存器y(此時假設b為立即數,如果b是某個變數的話,cpu將先對其進行定址),然後兩暫存器相加結果存入暫存器x,最後將暫存器x中的結果存入0x33445566。
a++過程:
同前假設,程式先從該地址取出a的值放入暫存器x,然後直接在暫存器x中執行自增操作,然後將暫存器x中的結果存入0x33445566。
當a+=b中的b=1的時候,多數c/c++編譯器都會智慧的將這三種運算直接簡化為a++的運算過程,以節約暫存器資源。
2樓:白雲藍天_曾
a=a+1;先從記憶體中把a調出來,再加1,送回a的記憶體地址中。
a+=1;也可以寫成上面的的表示式:a=a+1;
a-=1 也等於a=a-1;
a*=1 等於 a=a*1
a/=1 等於 a=a/1;
3樓:匿名使用者
個人覺得復這兩個表達示的制應該是等價的(當然不單結果)。都是將a從記憶體中取出來,然後執行相應的操作,然後再將存放回記憶體中。
感覺第二種寫法更符合程式設計師的思維,因為它很明確的告訴了看程式的人,我是想把a怎麼怎麼樣。
4樓:匿名使用者
執行結果一樣的,執行過程不一樣
5樓:匿名使用者
呵呵,a+=1執行的快 不必轉換
那個要轉換成低階語言
6樓:匿名使用者
a=a+1 //把a+1的值賦給a
a+=1 //就是a=a+1的縮寫形式
他們都是賦值運算。
7樓:nice人生
第一個是a加了1又賦值之給a
第二個就是a加1
在c語言中printfsum6d,sum1是什麼意思
printf 是輸出函式,基本格式應該是printf 雙引號裡是要輸出的內容,輸出的時候帶有變數的,就用printf 其他任意內容 格式修飾符 變數 像你這個格式有問題,應該寫成printf sum 6d sum1 d是格式修飾符,6d是輸出的結果佔有6個字元的空間,比如你的整型變數sum1的值為1...
a與a這兩個有什麼區別啊c語言中a和a有什麼不同?
a 與a 區別如下 1 a 是先取a的值然後進行 運算。2 a 是先執行 運算,再執行 即指標先移動一個位置,在對移動後指標所指位置解引用取值。3 與 是c語言中的運算子,的優先順序高於 an和a的區別,用法區別 因為沒有說明a的定義,這裡看 問題推測應該是個指標 a 表示a指向下個地址,例如a如果...
C語言連結串列這兩個語句snextpsp怎麼理解
先讓s指標指向的結點指向p結點 然後再讓s指標指向p結點 d不懂請追問 c語言連結串列中s next p s p什麼意思 假設s指向連結串列的最後一個節點,因為s指向的節點是最後一個,所以s next是null。假設這時需要將一個新節點p插在連結串列的結尾,很明顯我們需要讓最後一個節點指向p,於是s...