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

2021-03-28 03:17:59 字數 5926 閱讀 5885

1樓:匿名使用者

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值在程式流中的變化。

2樓:我不知道

簡單地說,都是i自加1。區別是,i++是執行完後面的語句才加1;而++i就先做i+1才執行後面的語句。

3樓:淺源深科

++ i 是先 ++ 再輸出,i ++ 是先輸出再 ++ ,兩者的執行順序要搞清楚

4樓:匿名使用者

關於自增自減運算

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

5樓:匿名使用者

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

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

6樓:匿名使用者

workdinner回答的很對,i++使用後加1,++i使用前加1;

所以單獨用的話是顯示6和7,

你在一起用先顯示i++,顯示的是6,但i=i+1=7,再用++i所以顯示8

7樓:匿名使用者

++在後面,就是用了再加

++在前面,就是加了再用

所以,system.out.println(i++)中,++在後面,所以就是用了再加,故而先用了i,再把i+1.。

反正我就是這樣記得。。樓主可以參考下

8樓:浩劫

從c++ 的角度來看,兩者的效率以及左右值、作用差別都很大,以上答案都只說了作用或者左右值的區別。詳情請看我的部落格++i、i++、i+=1、i=i+1的區別不復制黏貼了

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

9樓:蟲心菜

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。

10樓:匿名使用者

1、賦值

順序不同抄:

++ i 是先加後賦值;襲++i 是後面一步才bai賦值的,duzhi所以它能夠當作一個變dao量進行級聯賦值,++i = a =b,即 ++i 是一個左值;

i ++ 是先賦值後加;i++ 的後面一步是自增,不是左值。

++i和i++都是分兩步完成的。

2、效率不同:

比如i=3,b=i++就是說b=3,完成之後讓i變成4,b=++i就是先讓i++變成4,然後b=4,其中++i比i++效率要高些。

3、操作完成後,值不同:

對於n=++ i ,進行操作後,n的值發生了改變,其值變成了i+1。

對於n=i++ ,進行操作後,n的值不發生改變,其值仍然為i。

11樓:關鍵他是我孫子

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

1、i++是先使用i,再賦值計算

,即就是在計算程式時,先把 i 的值拿來用,然後在自回增1。

2、++i是先賦值計算,再使用,答即就是在計算程式時,是想把 i 自增1然後拿來用。

3、 ++i,在位元組碼層面,會先進行iinc,也就是執行自增,然後load變數。

4、 i++,則是,先load變數,後自增(因為已經load,所以本次自增,並不會影響已經load的變數值)。

比如:for(i=0;i<10;i++)

i先使用,用完最後在i++

for(i=0;i<10;++i)

i先自增,然後再用。

12樓:匿名使用者

一直bai以來,++ --語法浪費du了太多人的時間zhi。說句實在話,++ -- 在c語言中其dao

實是一個很細回節的語法,除答了表達簡練外,真的沒有什麼其它的好處了。

由於中國的c語言教程長期以來被譚浩強主宰,而譚又錯誤的把++ --作為一個c語言重點來教,並增加了一些難點,把本來很簡單的語法,搞得複雜無比!

簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。

而 a = ++i,相當於 i=i+1; a = i;

而 a = i++,相當於 a = i; i=i+1;

如果實在搞不明白++ --怎麼回事,那也不是什麼天塌下來的事。

因為a=++i完全可以寫成 i++; a=i。

a=i++完全可以寫成 a=i; i++。

而且,這也是一種好的程式風格:++ -- 語句如非特殊需要,請單獨一行使用。

13樓:匿名使用者

第一個是先取i的值,然後再把i加一,第二個是先把i加一,再取i的值

14樓:滾去學習

1、單獨使用時

i++和++i沒有區別,都是自增1

2、進行運算時

i++是 i 先運算在加1

++i是 i 先加1再運算

15樓:難堪

i++ 返回原來的值,++i 返回加1後的值。

16樓:糖糖又笑了

i++是先把i的值拿來用,然後在自增1

++i是想把i自增1然後拿來用

比如:for(i=0;i<10;i++)

i先使用,用完最後在i++

for(i=0;i<10;++i)

i先自增,然後再用

17樓:阿哲

剛好做copy

題到這裡,產生了疑問,現在來把自己的想法寫下來。

i++翻譯一下,就是先運算,後加,

++i翻譯一下,就是先加,再運算,和加號順序相應記。

比如sum+=++i;

就是i=i+1;sum=sum+i;

再比如sum+=i++;

sum=sum+i;i=i+1;

18樓:匿名使用者

後置加加和前置加加

i++ 表示i的值作為表示式的值,然後i自加1++i 表示i先自加1再作為表示式的值

個人覺得還是很有用的,能使程式變得簡潔。

19樓:匿名使用者

i++就是反回

bai(一般來du說)i值i再加1,

++i是i加一

zhi再返回i值.dao

..如下回的話:

int i=0;a=1;

a=a+i++;

cout <<"a="<輸出

答a=1a=3

20樓:小☆☆白

上邊各位兄臺的回答已經很詳細了,我就不多說了

21樓:夏環村

1. ++在前表示先計算後執行

2. ++在後表示先執行後計算

22樓:浩劫

從c++ 的角度來看,兩者的效率以及左右值、作用差別都很大,以上答案都只說了作用或者左右值的區別。詳情請看我的部落格++i、i++、i+=1、i=i+1的區別不復制黏貼了

i++ 和++i的區別

23樓:匿名使用者

一直以來,++ --語法浪費copy了太多人的時間。說句實在話,++ -- 在c語言中其實是一個很細節的語法,除了表達簡練外,真的沒有什麼其它的好處了。

由於中國的c語言教程長期以來被譚浩強主宰,而譚又錯誤的把++ --作為一個c語言重點來教,並增加了一些難點,把本來很簡單的語法,搞得複雜無比!

簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。

而 a = ++i,相當於 i=i+1; a = i;

而 a = i++,相當於 a = i; i=i+1;

如果實在搞不明白++ --怎麼回事,那也不是什麼天塌下來的事。

因為a=++i完全可以寫成 i++; a=i。

a=i++完全可以寫成 a=i; i++。

而且,這也是一種好的程式風格:++ -- 語句如非特殊需要,請單獨一行使用。

c語言i 和 i什麼區別

錯略低看,i和i 的作用相當於i i 1,但是 i和i 的不同之處在於 i喜歡i先執行i i 1後,在使用i的值,而i 是先使用i的值後再執行i i 1.i 表示遞增不在迴圈中則表示i的值 1 i 與 i的區別是 i 是先操作後賦值 也就是如果你在此輸出i 還是輸出的i的值,便是你在i 後面再寫一句...

i3 2100和i5 2300和i5 2320哪個好

2320首先是i5的並且是i5 2300的替代者,說不定就退市了,都是四核,2100是i3,架構根本性不同,實際效能跟2300根本不在一個檔次,你說主頻不是絕對的事兒,按你說的我倒是想說以前奔騰4時代還有4.2ghz的呢,拿到現在屁都不是。而2320的上一代2300在不超頻的情況下基本全面超越amd...

奔騰和i3有什麼具體區別,「i3 cpu和奔騰cpu」有什麼區別?

奔騰處理器和i3處理器的區別 主要體現在主頻,功耗,核顯效能上。奔騰系列處理器是英特爾酷睿系列之前的上一代產品。i3處理器是酷睿中最低端的一代,但酷睿處理器的整體效能比奔騰強很多,奔騰的高階處理器效能和個別低端的酷睿i3處理器效能相差不大。奔騰雙核,是比較低端的處理器,而酷睿i3,是中端的處理器。如...