C語言中m[i]++是什麼意思?
這個是c語言中的,按位取反操作
舉個例子
~100=-101,
首先看等號左邊
(100)
的二進位制表示為:
0110
0100
按位取反的意思就是每一位取反,0變1,1變0
所以:
~100
的二進位制表示為:1001
1011
所以等號左邊=1001
1011
再看右邊
-101。
一旦看到出現負數,那麼這個數一定是按有符號數的規則來表示的。一個二進位制數
按位取反並加一以後就可以得到它自己的負數的補碼,也就是說:
~x+1=-x
所以,我們把101按位取反加一
先取反:
~101=10011010
再加一:
~101+1=10011011=-101
所以等號右邊=10011011=左邊,所以等號成立。
p。s:補充一句,計算機記憶體裡的邏輯儲存位是非常複雜的,我這裡即使講得再清楚也無法保證你完全明白。
一般來說,組合語言的書的開頭部分會詳細講解這部分知識以服務於組合語言,請參閱之。
++在前是先給變數的值自加,及自身加一,再用變化後的值去參與運算。而++在後,則是先用原來的值參與運算,遇到一個特殊序列點(&&或||或,或?:或;)才使變數自加。若b=3,a=b++;則a=3,b=4。若a=++b,則a=4,b=4。
陣列
m[i]++,
就是陣列的第
i
位置上數值自增加1。
例如:
陣列
m,
m[0]
=
5;
m[0]++;
那麼
m[0]
現在的值是
6。
++i是使用i之前先使i加一。i++是使用i之後再加一。如果不能理解,那麼可以理解為:++i是先計算,再操作,i++是先操作,再計算。
JAVA裡的自增運算子。
其中:++i和i++是誰在前先取誰,但加一優先運算並賦給原值,取的值再參與其他運算。
++在後,則是先用原來的值參與運算,遇到一個特殊序列點(&&或||或,或?:或;)才使變數自加。若b=3,a=b++,則a=3,b=4。若a=++b,則a=4,b=4。
擴充套件資料:
i++和++i的區別主要在於自增的順序,i++代表著i參與運算之後,i的值會自增1,通俗來講也就是“先加1後賦值”,而++i則表示i自增1之後再參與其他運算,通俗說的“先賦值再加1”。
需要注意的是,若是在for迴圈裡是有不同的,如果要表示遞增,理論上兩種都可以,不過一般情況下,迴圈變數增值用i++,而不用++i是因為在迴圈結構裡需要迴圈變數來結束迴圈,而使用i++則會導致本來應該繼續的迴圈少執行一次。
所以迴圈結構裡通常都是迴圈變數在一次迴圈結構執行完成之後再自增。
參考資料來源:百度百科-++