ii和ii 的區別理解,i 和 i命令有什麼區別?

2021-09-12 11:20:46 字數 5364 閱讀 7685

1樓:

++i、--i和i++、i--的區別:

1、執行時間不同。

++ i先執行i +1,然後執行程式i ++先執行程式,然後執行i +1 int i = 8; printf(「%d \ n」,++ i)首先執行加法,因此列印輸出為9 printf(「%d \ n」,-i)。

2、進行減法的順序不同。

首先執行減法,列印輸出為8 printf(「%d \ n」,i ++), 首先執行程式。 列印輸出為8。列印完成後,i為99printf(「%d \ n」,i--)。

3、執行程式的結果不同。

列印後列印為9, 是8 printf(「%d \ n」,-i ++), 如果首先執行程式,則列印輸出為-8。 列印完成後,i為9 printf(「%d \ n」,-i--)。 首先執行程式, 列印輸出為-9,列印後,是8}。

2樓:蟲心菜

i++和++i命令的區別有:

1、賦值順序不同

++ i 是先加後賦值;i ++ 是先賦值後加;++i和i++都是分兩步完成的。

因為++i 是後面一步才賦值的,所以它能夠當作一個變數進行級聯賦值,++i = a =b,即 ++i 是一個左值;i++ 的後面一步是自增,不是左值。

形象的理解可以是i++先做別的事,再自己加1,++i先自己加1,再做別的事情。

2、效率不同

比如i=3,b=i++就是說b=3,完成之後讓i變成4,b=++i就是先讓i++變成4,然後b=4,其中++i比i++效率要高些。一般來說在迴圈域裡面,這兩者並沒有什麼很大的區別,但是要注意其生存週期,以及i值在程式流中的變化。

3、 i++ 不能作為左值,而++i 可以。

左值是對應記憶體中有確定儲存地址的物件的表示式的值,而右值是所有不是左值的表示式的值。一般來說,左值是可以放到賦值符號左邊的變數。

但能否被賦值不是區分左值與右值的依據。比如,c++的const左值是不可賦值的;而作為臨時物件的右值可能允許被賦值。左值與右值的根本區別在於是否允許取地址&運算子獲得對應的記憶體地址。

比如:int i = 0;

int *p1 = &(++i);//正確

int *p2 = &(i++);//錯誤

++i = 1;//正確

i++ = 1;//錯誤

擴充套件資料

當i=5時,s=(++i)+(++i)和s=(i++)+(i++)的值:

1、當i=5時,s=(++i)+(++i)=13 先算第一個(++i),++在前面,就把i先加1再把賦值,即先把i變為6然後再得出(++i)的值為6,這時i已經變為6了,

再計算第二個(++i),++在前面也是先把i加1後再賦值,不過這時的i已經為6了,第一步的時候把i變成6了的,然後加1的話就變成7了,所以第二個(++i)的值為7,s=(++i)+(++i)=6+7=13。

2、s=(i++)+(i++)=11 先算第一個(i++),i在前面,就先賦值再把i加1,即(i++)的值為5,i的值變為6,第二個(i++),i在前面,先賦值再把i加1,這個時候的i已經為6了,即(i++)的值為6,而i已經變為7了。所以s=(i++)+(i++)=5+6=11。

3樓:鍾離毅君薊瑤

因為i++的意思是i在使用過後+1,座椅執行完第二條語句之後i就變成3了。

++i是在使用前+1,那麼結果就會變成b=3

i=3了。

4樓:蹄子

++i 先執行i+1後執行程式 i++ 先執行程式後執行i+1 int i=8; printf("%d\n",++i);//先執行加法 所以列印出來的是9 printf("%d\n",--i);//先執行減法 列印出來是8 printf("%d\n",i++);//先執行程式 列印出來是8 列印結束後i為9 printf("%d\n",i--);//先執行程式 列印出來是9 列印結束後i為8 printf("%d\n",-i++);//先執行程式 列印出來是-8 列印結束後i為9 printf("%d\n",-i--);//先執行程式 列印出來是-9 列印結束後i為8 }

5樓:匿名使用者

關於自增自減運算,很多書籍沒有把問題講清楚,在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也是一樣的道理。

6樓:匿名使用者

++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;

(注:自增自減速運算只能對變數進行,常量和表示式不能進行該運算)

誰能詳細的給我講一下i++,++i,i--,--i的區別阿

7樓:八哥說科技

1、運算子型別不同:

i++使用的是後置自增運算子,++i使用的是前置自增運算子,i--使用的是後置自減運算子,--i使用的是前置自減運算子。遞減操作符是「--」,意為「減少一個單位」;遞增操作符是「++」,意為「增加一個單位」。

2、運算規則不同:

++i表示,i自增1後再參與其它運算;而i++ 則是i參與運算後,i的值再自增1。自減運算子--與之類似,只不過是變加為減而已,即--i表示,i自減1後參與其它運算,而i-- 則i參與運算後,i的值再自減1個單位。

8樓:匿名使用者

1.後置運算:i++表示先運算,後自加。

意思是遇到i++了,我先把當前的k的值拿來參加運算,後面再去管它的自加。

那麼,【「後面」後到什麼程度呢?要後到當前的語句執行完,即遇到分號;表示

語句執行完了,所以i才自加1。】

如:int i=5,b=0;

b=i++;的意思就是,先算b=i(即b=5),遇到分號;表示語句結束,i才自加1,即i變為6。

2.前置運算:++i表示先自加,後運算

這個意思就是遇到++i了,先把k的值加了1,再往後執行別的。

如:int i=5,b=0;

b=++i;的意思就是,先把i自加1,即i為6,再算b=i(即b=6)。

掌握好這兩點,i--和--i也是一樣的道理。

9樓:匿名使用者

i++,i--:用了i,再把i重新賦值~假如,i=1;a=i++,那麼現在的a是1,而i值變為了2,如果是a=i--的話,那麼a還是1,但i變成了0;

++i,--i:就是剛好相反,先把i賦了值再用i~假如,i=1;a=++i,那麼現在的a是2,i也是2,要是a=--i的話,現在的a就是0,i也是0;

10樓:

i=5;

b=i++;

執行過後b=5,i=6

i=5;

b=++i;

執行過後b=6,i=6

就是說i++先執行語句,再自增

++i先自增,再執行語句

i--,--i同理

11樓:匿名使用者

對i++,i--,++i,--i的易解,在此舉一例子詳解:

main( )

看懂了吧

12樓:匿名使用者

運算子在前面的先進行運算在自加或自減,在後面的相反。

例如a=1; b=a++,那麼b等於1,a等於2.

如果b=++a;b就等於2 了

13樓:浩劫

具體可以看我的部落格,敲了一些**看上去更詳細一點:++i、i++、i+=1、i=i+1的區別

i++和++i命令有什麼區別?

14樓:蟲心菜

i++和++i命令的區別有:

1、賦值順序不同

++ i 是先加後賦值;i ++ 是先賦值後加;++i和i++都是分兩步完成的。62616964757a686964616fe59b9ee7ad9431333366303839

因為++i 是後面一步才賦值的,所以它能夠當作一個變數進行級聯賦值,++i = a =b,即 ++i 是一個左值;i++ 的後面一步是自增,不是左值。

形象的理解可以是i++先做別的事,再自己加1,++i先自己加1,再做別的事情。

2、效率不同

比如i=3,b=i++就是說b=3,完成之後讓i變成4,b=++i就是先讓i++變成4,然後b=4,其中++i比i++效率要高些。一般來說在迴圈域裡面,這兩者並沒有什麼很大的區別,但是要注意其生存週期,以及i值在程式流中的變化。

3、 i++ 不能作為左值,而++i 可以。

左值是對應記憶體中有確定儲存地址的物件的表示式的值,而右值是所有不是左值的表示式的值。一般來說,左值是可以放到賦值符號左邊的變數。

但能否被賦值不是區分左值與右值的依據。比如,c++的const左值是不可賦值的;而作為臨時物件的右值可能允許被賦值。左值與右值的根本區別在於是否允許取地址&運算子獲得對應的記憶體地址。

比如:int i = 0;

int *p1 = &(++i);//正確

int *p2 = &(i++);//錯誤

++i = 1;//正確

i++ = 1;//錯誤

擴充套件資料

當i=5時,s=(++i)+(++i)和s=(i++)+(i++)的值:

1、當i=5時,s=(++i)+(++i)=13 先算第一個(++i),++在前面,就把i先加1再把賦值,即先把i變為6然後再得出(++i)的值為6,這時i已經變為6了,

再計算第二個(++i),++在前面也是先把i加1後再賦值,不過這時的i已經為6了,第一步的時候把i變成6了的,然後加1的話就變成7了,所以第二個(++i)的值為7,s=(++i)+(++i)=6+7=13。

2、s=(i++)+(i++)=11 先算第一個(i++),i在前面,就先賦值再把i加1,即(i++)的值為5,i的值變為6,第二個(i++),i在前面,先賦值再把i加1,這個時候的i已經為6了,即(i++)的值為6,而i已經變為7了。所以s=(i++)+(i++)=5+6=11。

ii2和i2的區別,C語言i 2和i 2的區別

i i 2 和 i 2的區別主要有以下三點 1 運算順序不相同 簡單說就是i i 2 比 i 2多了一次對變數 i 的運算。i i 2是先進行i 2的運算得出一個結果,再賦值給i。i 2就是先賦值然後在進行加法。2 得到的結果不相同 c語言中i 2 等同於 i i 2 這是簡略寫法,但是計算時演算法...

1 i和2 i哪個大,i 和 i命令有什麼區別?

虛部不為零的虛數不能比較大小,虛部為零的虛數可以比較大小。0 i 0 i i i 0 1 0 1 i 1 i i i i 1 i和2 i 不好比較 0 i 0 1 i i i e 2 e i 4 或者e i 5 4 即 i 2 i 2 2 或者 i 2 i 2 2 0 i不存在 這條我不確定 1 i...

索尼LT26II和索尼LT29I哪個好

處理器上26ii是雙核1.7g的,比29i要快。螢幕26i比29i小0.3寸。解析度,畫素都一樣,29i的藍芽支援edr技術,藍芽傳輸速度比較快。不過現在藍芽很少用,推薦你買26ii,無論外觀還是硬體,還是比29i要強點的。4.3的屏一個手勉強一個手可以玩,4.6的屏也就姚明一個手能玩 lt26ii...