在c語言中對於A A 1,A 1這兩個函式該怎麼理解

2021-03-12 09:34:48 字數 1008 閱讀 3116

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...