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

2021-03-28 03:17:58 字數 6085 閱讀 3576

1樓:樑玉章

在遊戲中就 i++ 我加你 ++i是求人家加。區別在於 應答 與請求

在程式設計中i++和++i最終是一樣的,不過在迴圈體中,i++是先取出i,再加1,++i先加後取

2樓:匿名使用者

++i是先i自加1,然後在使用i的值

i++是先用i的值,在i自加1

比如 #include

main()

a為0,因為i先賦值給a,然後自加1

b為1,因為j先自己1,在賦值給b

i和j都為1

3樓:匿名使用者

++i是先自加1,然後再賦值

i++是先賦值,再加1

4樓:匿名使用者

++i 是i先+1在附直

i++是 i先附值在+1

5樓:

i++ 就是後+1

++i 就是先+1

6樓:泥中弘易雲

i++,是本次迴圈中,i的值為i,下次迴圈中i的值為i+1

++i,是本次迴圈中,i的值為i++,下次迴圈中i的值為i+2

意思是一個是用完後自增1,一個是自增1以後再用。

7樓:鞏雨邵瀾

首先這個你輸入vc後就知道結果了。然後再回頭去想問題。這樣容易理清思路。

q=(++j)+(++j)+(++j)應理解j先自加,自加3次後為8,然後再所有的j相加為24.

8樓:徐微鄧悅

據我所知,這樣的表示式

在不同的編譯器中會得到不同的結果,即在turboc、borland

c、microsoft

c、keil

c等中編譯執行可能會得到不同的結果(我沒有去檢驗,上學時檢驗過類似問題),如果是考試應結合教材所用環境測試並記憶,如果是工程應用,應避免使用這種**。你自己給出的答案在microsoft

visual

studio

2010中是正確的。

9樓:印實乾卯

一直以來,

--語法浪費了太多人的時間。說句實在話,

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

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

簡單的來說,i和

i,在單獨使用時,就是

i=i1。而a

=i,相當於

i=i1;a=

i;而a=

i,相當於a=

i;i=i

1;如果實在搞不明白

--怎麼回事,那也不是什麼天塌下來的事。

因為a=

i完全可以寫成i;

a=i。

a=i完全可以寫成

a=i;i。

而且,這也是一種好的程式風格:

--語句如非特殊需要,請單獨一行使用。

10樓:巨集寄江以鬆

樓上的你可以執行一下,q答案是22,不是24

11樓:安三羊舌凝然

i++的意思是

先將i值存在一個臨時變數裡面,接著i

的值加1,最後將儲存在臨時變數裡的、更改前的值返回;而++i的意思是先將

i的值加1,然後返回更改後的i值。

無論是p=(i++)+(i++)+(i++);

還是q=(++j)+(++j)+(++j);

這兩種寫法從語法上說沒有錯,但其實是不規範的寫法,隨不同的編譯環境而計算出來的

p、q值不一樣,

在vc++2008

中,它是這樣計算的:

p=(i++)+(i++)+(i++)

等價於:p=

i+i+

i;i+=3;

//最終p=

15,i=8;

q=(++j)+(++j)+(++j);

等價於:j+=

3;q=j

+j+j;

//最終q=

24,j=

8;在不同的編譯環境中可能會出現不同的值。最好不要在一個表示式中對一個變數的值更改兩次以上,那樣會導致未定義的行為,隨編譯器不同而不同。

12樓:馬貞和浩宕

先加和後加的區別int

i=0;int

j=i++;//後加,即i的值賦

給j之後,i才加1,最後結果是j=0,i=1;i=0;//i重新歸0;int

j=++i;//前加,即i的值賦給j之前i已經加了1,最後結果是j=1,i=1;

13樓:瑞懌悅樓慧

倆者的意思都是

i=i+1;

區別i++(加號在後面)就是i先不自加。就是說你使用i之後i的值+1.(因為++在i後面嘛)。

++i(加號在前面)就是i在沒使用之前就自加。這樣你懂了吧

14樓:幽谷暢想

++i,i=i

i++,i=i+1

15樓:浩劫

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

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

16樓:蟲心菜

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。

17樓:匿名使用者

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。

18樓:關鍵他是我孫子

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先自增,然後再用。

19樓:匿名使用者

一直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++。

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

20樓:匿名使用者

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

21樓:滾去學習

1、單獨使用時

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

2、進行運算時

i++是 i 先運算在加1

++i是 i 先加1再運算

22樓:難堪

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

23樓:糖糖又笑了

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

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

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

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

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

i先自增,然後再用

24樓:阿哲

剛好做copy

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

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

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

比如sum+=++i;

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

再比如sum+=i++;

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

25樓:匿名使用者

後置加加和前置加加

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

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

26樓:匿名使用者

i++就是反回

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

++i是i加一

zhi再返回i值.dao

..如下回的話:

int i=0;a=1;

a=a+i++;

cout <<"a="<輸出

答a=1a=3

i和i有什麼區別,i和i有什麼區別啊

i 是先對i操作,再對i執行 1 i是先執行 1,將值賦給i後,再對i操作 比如 int i 1 int a 1 i 執行過程是1 1,然後再將結果2賦給a,最後是i i 1 int a 1 i 執行過程是先執行i i 1,得到2,然後執行1 i,並將結果1 i賦給a i和i 有什麼區別啊?至於 i...

i3 4160和4340區別,i3 4150和4160區別

4340效能更好,主要是 顯示卡效能好,是hd4600,l3快取更大,4m。i3 4150和4160區別 沒多大區別,4160比4150的主頻高了0.1g,此外就沒其他任何區別了,最大的區別在於架構上,i3 4150是老的haswell架構的,i3 4160是新的haswell r架構,如果你的主機...

C語言中的 i和i 的區別,C語言程式設計中的 i和i 有什麼區別?

c語言是 cdecl呼叫方式,copy所以函式bai引數是從右往左入棧,先du壓棧zhi的當然先計算,而在壓棧的過程中後置i i 是不dao會改變i的值的,它只會儲存在一個臨時變數裡面,前置的 i i 會直接改變i的值,所以就得到實驗 的結果了!看結果是從右往左算的,其實研究這個沒什麼意義。不同的編...