1樓:倒霉熊
a= i++;
則相當於 a=i;i=i+1;
a=++i;
則相當於 i=i+1;a=i;
也就是++i是先加1,然後使用加1後值。
i++是使用i原來的值,然後再改變i的值加1。
2樓:匿名使用者
這個是c的基礎,看了好幾遍書的我剛剛開始還是不明白,最後程式設計試了試就知道了
#include
int main(void)
顯示的是 m=i++=0 n=++i=1,所以呢i++是在複製之後在加1的,而++i是先加1的。
意思是乙個是用完後自增1,乙個是自增1以後再用。
3樓:匿名使用者
i++,是本次迴圈中,i的值為i,下次迴圈中i的值為i+1
++i,是本次迴圈中,i的值為i++,下次迴圈中i的值為i+2
意思是乙個是用完後自增1,乙個是自增1以後再用。
4樓:浩劫
從效率以及左右值、作用來看差別很大,詳情請看我的部落格++i、i++、i+=1、i=i+1的區別不複製黏貼了
java中++i和i++的區別
5樓:育知同創教育
i++ 和 ++i的基本功能是相同的,都是對變數i進行自增1運算,從功能上講相當於i =i+1 ;
++運算子分為字首++和字尾++,如i++中的++就是字尾運算子,++i中的就是字首運算子,兩個的區別在於:
字首++,先使用變數,再進行變數自增1
字尾++,先進行變數自增1,再使用變數
如:示例**1:
int i=0;
while( i++ < 5 ) //先用i的原值與5比較,比較完成後,無論結果是真還是假,都要再進行i=i+1運算
這個迴圈執行5次,輸出 1 2 3 4 5,最後的i值是6
示例**2:
int i=0;
while( ++i < 5 ) //先進行i=i+1運算,然後用i的新值與5比較,判斷結果是真還是假
這個迴圈執行4次,輸出 1 2 3 4,最後的i值是5
6樓:匿名使用者
i++是先使用,再累加一次,比如下面 的**:
int i = 0 ;
system.out.prinltn(i++); //輸出的是 0++i是先累加一次,再被使用:
int i = 0 ;
system.out.prinltn(++i); //輸出的是 1
i++和++i是什麼意思?
7樓:會飛的小兔子
i++和++i是c語言運算子,i++是字尾遞增的
意思,++i是字首遞增的意思。
1、i++是字尾遞增的意思,i++是先進行表示式運算,再進行自增運算。把i++的運算過程拆分開,等效於i=i+1可以看到運算結果是一致的。
x = i ++; //先讓x變成i的值1,再讓i加1
2、++i是字首遞增的意思,++i是先進行自增或者自減運算,再進行表示式運算。運算結果可以發現,僅從i的值來看,++i和i++最終的i值是一樣的,都是i自增加了1。
x = ++i; //先讓i加1, 再讓x變成i的值1
擴充套件資料
c語言運算子的特點
1、c語言是乙個有結構化程式設計、具有變數作用域(variable scope)以及遞迴功能的過程式語言。
2、c語言傳遞引數均是以值傳遞(pass by value),另外也可以傳遞指標(a pointer passed by value)。
3、不同的變數型別可以用結構體(struct)組合在一起。
4、只有32個保留字(reserved keywords),使變數、函式命名有更多彈性。
5、部份的變數型別可以轉換,例如整型和字元型變數。
6、通過指標(pointer),c語言可以容易的對儲存器進行低階控制。
7、預編譯處理(preprocessor)讓c語言的編譯更具有彈性。
8樓:浩雄王
簡單的理解就是i++是先訪問i然後再自增,而i++則是先自增然後再訪問i的值。
用下面的**作為乙個例子
#include
int main()
c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
把運算子=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。
9樓:匿名使用者
i++表示先進行表示式運算,再進行自增運算的意思。++i表示自增或者自減運算,再進行表示式運算的意思。如果只是從i的值來看,兩者的數值最後都一樣。
java是一門物件導向程式設計語言,不僅吸收了c++語言的各種優點,還摒棄了c++裡難以理解的多繼承、指標等概念,因此java語言具有功能強大和簡單易用兩個特徵。
10樓:匿名使用者
i++ :先引用後增加
++i :先增加後引用
i++ :先在i所在的表示式中使用i的當前值,後讓i加1++i :讓i先加1,然後在i所在的表示式中使用i的新值
11樓:江小右
都是i=i+1的意思,區別在於i++是i先不自加,在語句完後自加,++i先自加;列如a=1+i++;i本來為1的話,這裡a=1+1;語句完後i才加1為2;
a=1+++i的話就先i=i+1;i=2.然後a=i+1,a=3
12樓:匿名使用者
i++;先賦值在自加;
++i;先自加在賦值;
備註:在賦值運算中有區別,單獨使用沒有區別(例子1:單獨使用
for(int i=0;i<10;i++)for(int i=0;i<10;++i)這樣使用沒有區別
例子2:賦值運算
a=i++;
(分解:a=i; i=i+1;)
a=++i;
(分解:i=i+1;a=i;)
這樣使用a的值是不一樣的)
13樓:匿名使用者
直接使用看不出區別,都是變數i加1
在賦值時才能進行區別,
如:y=i++ // y的值為i (先引用,後運算)y=++i // y的值為i+1的結果 (先運算,後引用)
14樓:匿名使用者
++i是在使用i之前先使i的值加1
i++是在使用i之後,使i的值加1
15樓:匿名使用者
i++ 先運算後自加,++i先自加後運算。
16樓:匿名使用者
i++:先用,後加加
++i:先加加,後用
17樓:匿名使用者
書上的解釋,應該好理解
18樓:zhbqxy張海博
h**c ghivv7v7u%7t8tifeih***xccc..r,p4free
19樓:西橙
這樣寫你們就懂了:
i++ 等於: i = i + 1;
++i 等於:i + 1 = i;
假設i=1時:
a = i++; a=i=i+1; 所以a等於1,i等於2.
b = ++i; b=i+1=i; 所以b等於2,i等於2.
js驗證**如下:
20樓:匿名使用者
。vc- f7 vui8 2
21樓:浩劫
從c++ 的角度來看,兩者的效率以及左右值、作用差別都很大,以上答案都只說了作用或者左右值的區別。詳情請看我的部落格++i、i++、i+=1、i=i+1的區別不複製黏貼了
i++和++i的區別
22樓:匿名使用者
a = ++i,相當於 i=i+1; a = i;
a = i++,相當於 a = i; i=i+1;
如果有表示式 a = i++ 它等價於 a = i ; i = i + 1;
如果有表示式 a = ++i 它等價於 i = i + 1; a = i;
1 首先兩者的區別是:前者是先賦值,然後再自增;後者是先自增,後賦值
2 ++i和i++都是分兩步完成的。因為++i 是後面一步才賦值的,所以它能夠當作乙個變數進行級聯賦值,++i = a =b,即 ++i 是乙個左值;i++ 的後面一步是自增,不是左值。
3 ++i 和i++ 的使用,一般來說在迴圈域裡面,這兩者並沒有什麼很大的區別,因為編譯器一般都會給你做優化。但是要注意其生存週期,以及很難察覺的寫髒,就好像指標delete以後一定要賦予0一樣,我們要注意i值在程式流中的變化。
23樓:我不知道
簡單地說,都是i自加1。區別是,i++是執行完後面的語句才加1;而++i就先做i+1才執行後面的語句。
24樓:淺源深科
++ i 是先 ++ 再輸出,i ++ 是先輸出再 ++ ,兩者的執行順序要搞清楚
25樓:匿名使用者
關於自增自減運算
,很多書籍沒有把問題講清楚,在c語言裡是這樣的:
1.後置運算:k++表示先運算,後自加。
意思是遇到k++了,我先把當前的k的值拿來參加運算,後面再去管它的自加。
那麼,【「後面」後到什麼程度呢?要後到當前的語句執行完,即遇到分號;表示
語句執行完了,所以k才自加1。】
如:int k=5,b=0;
b=k++;的意思就是,先算b=k(即b=5),遇到分號;表示語句結束,k才自加1,即k變為6。
2.前置運算:++k表示先自加,後運算
這個意思就是遇到++k了,先把k的值加了1,再往後執行別的。
如:int k=5,b=0;
b=++k;的意思就是,先把k自加1,即k為6,再算b=k(即b=6)。
掌握好這兩點,k--和--k也是一樣的道理。
26樓:匿名使用者
++i是在進行運算之前使i自增1,再用增後的值進行運算i++是在進行運算之後才使i增1,使用原值進行運算一次後,再使i自增1
你執行一下這個再體會體會就明白了:
i=1;j=1;k=1;t=1;
m1=i++ + i++;
m2=++j + ++j;
m3=k++ + ++k;
m4=++t + ++t;
(注:自增自減速運算只能對變數進行,常量和表示式不能進行該運算)
27樓:匿名使用者
workdinner回答的很對,i++使用後加1,++i使用前加1;
所以單獨用的話是顯示6和7,
你在一起用先顯示i++,顯示的是6,但i=i+1=7,再用++i所以顯示8
28樓:匿名使用者
++在後面,就是用了再加
++在前面,就是加了再用
所以,system.out.println(i++)中,++在後面,所以就是用了再加,故而先用了i,再把i+1.。
反正我就是這樣記得。。樓主可以參考下
29樓:浩劫
從c++ 的角度來看,兩者的效率以及左右值、作用差別都很大,以上答案都只說了作用或者左右值的區別。詳情請看我的部落格++i、i++、i+=1、i=i+1的區別不複製黏貼了
++i和i++有什麼區別啊?
30樓:匿名使用者
至於++i和i++有什麼區別,舉個例子
1.a = i++; 等校為
a = i;
i = i + 1;
2.a = ++i; 等校為
i = i + 1;
a = i;
i++和++i的 最重要的區別大家都知道就是 +1和返回值的順序
但,兩這還有乙個區別(在c++中)就是i++在實現的時候,產
生了乙個local object
class int;
//++i 的版本
int int::operator++()
//i++ 的版本
const int int::operator ++(int)
所以從效率上來說++i比i++來的更有效率
具體細節你可以看more effective c++ 的m6
看看c++類過載運算子就知道了。
對於i++的實現是:
int temp;
temp = i;
i = i+1;
return temp;
而++i的實現是:
i = i+1;
return i;
比如printf("%d",i++);是先輸出i值隨後i自加,而printf("%d",++i);正好相反
for(operation1;operation2;operation3)
都是按operation1
operation2
//do something
operation3
的順序來執行的
而i++與++i在單獨的語句中結果是一樣的。
簡單而言: ++i 在 i 儲存的值上增加一併向使用它的表示式 ``返回" 新的, 增加後的值; 而 i++ 對 i 增加一, 但返回原來的是未增加的值。
英式音標I與i,音標中的I和i有區別嗎?
i 是個長音,靠口腔發出,發聲處靠前,口型很扁,嘴唇向兩邊張開成微笑狀。i 是個短音,靠喉嚨發出,發聲處靠後,口型略窄,發這個音時,要短促有力。發 l 音時,將舌頭放到上牙齦上,再向下輕撥,發音。音標中的i和i有區別嗎?一 讀音不同 在美國音標中,單獨的音標 i 指的是長音,而 i 指的是短音,在英...
I 和 me的區別,i與my與me的區別
you and me是有語法錯誤的,因為很明顯,這個短語做整個句子的主語,而只有代詞的主格形式或者物主代詞可以做主語,代詞的賓格是不能做主語的。而且,and是連詞,需要連線兩個主格共同做主語,me明顯不是and的賓語,and也不可能帶賓語。因此,嚴格來講,you and me是不正確的。you an...
I3 I5 I7,i3 i5 i7的區別是什麼?
目前的i7均採用45奈米製程,i5 750和i5 740均採用45奈米製程,i5 670 i5 660 i5 661和i5 650均為32奈米製程的clarkdale核心,i3全線為32奈米的clarkdale核心。另外,i7和i5均具備睿頻技術,i3不支援睿頻。i7全線為4核八執行緒,i5 750...