i 與i i 1的區別,i 和 i的區別

時間 2022-10-22 04:00:47

1樓:吹泡小蝦

應該用vc看看反彙編**,通過記憶體中的操作你就會發現有區別了

具體操作就看你的熟練度了

把這些答上~

2樓:匿名使用者

你看下面的說法就明白了:(和你問的問題基本一樣)

執行後i的值不一樣,++這是乙個自增運算子,也就是說他讓變數自增,他又分為字首和字尾,在變數前面就是字首,如:++i,在變數後面就是字尾,如:i++,這兩個的區別又在於返回的值不同,++i是返回的是i增加後的值,而i++返回的是i沒增加的值

3樓:匿名使用者

i++和++i是最易混淆的,和i=i+1有點不同,i++先賦值,再遞加的,而++i卻相反,先遞加,再賦值給i。i++與i=i+1單獨來看,表示式意思相同。但在具體環境中,就易和++i混淆。

4樓:匿名使用者

i++是先參與運算,再把i的值增加1;

而i=i+1就相當與++i,是先把i的值增加1,再參與運算;

如:int i=2,t;

t=i++;

printf("t=%d",t); 這裡得出t=2;

而: int i=2,t;

t=i+1;

printf("t=%d",t); 這裡就會得出t=3;

5樓:匿名使用者

i++; 的效率更高。

6樓:匿名使用者

i++先賦值,再遞加的

而++i,先遞加,再賦值

7樓:屋哥

i++的效率較高,因為這是自增,不用其它儲存空間.而i=i+1要先做i+1並放入記憶體中,再把它賦給i.

不知你要問的是不是這個

8樓:解然譚鶯

大體意思是

輸入i=

0.i=i++的意思就是遞增加1.這裡的++直到你需要的條件完成i=你所需要條件停止

9樓:匿名使用者

i++ 是 i=i+1 但是先+1後使用

++i 是 i=i+1 這裡先使用後+1

/***************簡單的例子***************/

int i=1,a=0;

a= i++; 這時a=1,i=1;但在下面使用時就是2cout<

10樓:

這些書上都有!回家好好看看,沒有可以買本"c語言程式設計"譚浩強第三版,很適合新手的!

i++和++i的區別

11樓:匿名使用者

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

12樓:我不知道

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

13樓:淺源深科

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

14樓:匿名使用者

關於自增自減運算

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

15樓:匿名使用者

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

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

16樓:匿名使用者

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

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

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

17樓:匿名使用者

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

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

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

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

18樓:浩劫

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

i++與i=i+1 一樣嗎可以互換嗎

19樓:匿名使用者

在講課時老師會說「i++是i=i+1的簡略形式」。不過很遺憾的告訴你,不是任何時候都可以互換。

當一條語句只有「i=i+1」時,此時是可以互換的。

但是當需要用到語句的返回值時,就要小心了。i++返回值為i,然後將i+1;i=i+1返回的是i+1(賦值語句之後的i值):如

if(i++) a=0;

這條語句是說「如果i不等於0,a賦值為0,並且i進行加一操作」,此時等價於:

if(i!=0)(注意,i++操作是在判斷過if條件後做的,不是條件成立後才做,這裡的寫法結果沒錯,但嚴格來說不等價,是錯誤的,只顯示操作的先後關係)

if(i=i+1) a=0;

這是說「首先將i加1,然後看i是否為0,如果不為0,a賦值為0。此時等價於:

i=i+1;

if(i) a=0;

有人會給你舉i++和++i同時出現在一條語句中的例子。個人認為,那種例子沒有必要看,也沒有必要弄懂。因為那種例子「沒有」正確答案(編譯器不同,答案不一樣),只要記得不要那麼使用就對了。

作為初學者,應該要知道i++的真正含義,不要單純記如「它和i=i+1一樣」這種結論。你能提這種問題,就比這裡其它要求寫作業的人好多了~~(那種問題我是不回答的:p)

20樓:湛藍之炎

這兩個東西完全不一樣..

如果是單獨執行,看起來效果是一樣的,但是放到語句裡就不一樣了

在計算表示式的時候,++i的優先順序最高,其次是i=i+1,i++的優先順序最低

假設i初始為0

(i++)+(i++)在計算完之後再對i+1,即先計算i+i,然後再把i做2次+1,表示式值是0

(i=i+1)+(i=i+1)在計算時對i+1,即先計算1次i+1,再計算一次i+1,相當於1+2,最後結果是3

(++i)+(++i)在計算前對i+1,即先計算2次i+1,此時i=2,然後再做中間的加法,相當於2+2,最後結果是4

在單獨執行的時候++i的效率最高

21樓:匿名使用者

++i和i=i+1是等價的(或者說本應該是...因為c++規範的不嚴謹,結果變成什麼樣的都有)和i++不是

當然獨立做語句的話完全一樣包括執行速度在內。

22樓:

運算結果是一樣的

假設編譯器不作任何優化

在彙編級**下是計算效率是不一樣的

++對應的是彙編加1指令

彙編加1指令 inc 比彙編加法指令 add 效率要高

23樓:爨室

不一定可以互換

if(i++) a++; //如果i不等於0,a++ 並且i無條件+1

此時就不可以互換了

++i和i++的區別就不說了 但願能幫上你

24樓:匿名使用者

如果寫在一行,作為單獨命令來說,完全一樣,新版的編譯器會做同樣的優化,也不存在效率問題。

25樓:匿名使用者

在c++中是一樣的,可以互換

i=i+1和i+=1有什麼區別

26樓:匿名使用者

這個問提應該有個前提。就是你已經設定了i的值。這裡加入i=1.

哪麼下面,i=i+1,這個就是i=i+1,若下面還有程式,i就等於2.而i+=1呢,他是先取i=1.然後在做加法,雖然結果一樣,但是有時候應用起來不一樣的。

就像++i和i++.分清楚就ok

27樓:卡卡西

效果一樣的。我個人覺得寫**的時候用i+=1這種形式可以節省時間,比較方便。

28樓:匿名使用者

兩個的效果一樣,都是使i加1

但後面乙個更好,生成的機器**執行速度更快,而且寫在**中顯得更緊湊

29樓:匿名使用者

對大部分編譯器來講,生成的**是一樣的。有些編譯器可能會有區別。

ps. 對於這種問題,不可能脫離編譯器,單獨討論的。

30樓:匿名使用者

意義上是沒有區別的

網上有很多人討論如果不經過編譯器優化的效率問題不過我覺得效率也應該是一樣的

這裡有菜鳥們的討論

看一下吧

31樓:匿名使用者

二者就是表現形式不同,表示式結果一樣!!!

32樓:匿名使用者

除了形式不一樣,結果一樣

c語言i=i++和i=i+1區別如何理解

33樓:天雲小店

i = i++等價於如下兩條語句:

i = i;

i = i + 1;

所以i = i++和i = i + 1執行後的結果是一樣的。

但是對於 j = i++和 j = i + 1,執行結果就不一樣了。根據上面的理解可知,j = i++等價於

j = i;  // 跟j = i + 1不一樣i = i + 1;

34樓:

當兩個語句執行完了,其值就沒有區別;但在執行過程中,前者i的值未變,後者的值比原來增加了1.

35樓:ai看雪

i++;

++i;

上面這兩個語句沒有什麼區別,都等價於

i = i+1;

但是一旦將

i++++i寫到乙個表示式裡面,就像你說的

i=i++;

這樣就有區別了,想必老師們也經常提到,就不多說了,這裡單說i=i++和i=i+1區別。

單從表面上來看,沒有什麼區別,因為結果是一樣的,但是將c語言的乙個不能再拆解的語句可以用組合語言進行「拆解」,這個你可以通過編譯器看一下就清楚了

7:        i = i++;

0040102f   mov         eax,dword ptr [ebp-4]

00401032   mov         dword ptr [ebp-4],eax

00401035   mov         ecx,dword ptr [ebp-4]

00401038   add         ecx,1

0040103b   mov         dword ptr [ebp-4],ecx

8:        i = i+1;

0040103e   mov         edx,dword ptr [ebp-4]

00401041   add         edx,1

00401044   mov         dword ptr [ebp-4],edx

i7和i5有什麼區別,酷睿i7與i5的區別是什麼?

酷睿i5和i7的區別 酷睿i7與i5的區別是什麼?酷睿i7與i5的區別如下 1 架構方面 酷睿i5是在2009年因特爾發布的一款產品,採用的是intel nehalem架構,並且酷睿i5處理器相比之前的處理器會融合一些北橋的功能,北橋也就是能夠提高通訊能力的一塊晶元,在處理器的旁邊。酷睿i7採用的是...

糾結!i5 2300和i5 760的區別,剛出的i5 2300比i5 760效能好很多嗎?值得現在就入手嗎

看你銀子了啊,i5 2300肯定是比760強的,但是具體效能上有多大的提公升,可能還是需要具體測試了。不過不知道你買了電腦幹啥的,其實760我覺得足夠用了。現在還便宜,價效比高啊。要是760的話,看你是否超頻了,要是打算超頻的話,選p55的板子吧,要是不是那種玩極限超頻的,小超一下,可以考慮h55系...

三星i9500和i9508的區別

i9500與i9508的主要區別為 1.i9500分為公開版和聯通版,支援中國聯通2g 3g網路,支援中國移動2g網路。2.i9508移動定製機,支援中國移動2g 3g網路,中國聯通2g網路。您好,三星i9500是聯通版,支援聯通3g網路i9508是移動定製機,如果你要使用移動3g網路就只能買這個。...

i7和i5這兩的區別大嗎,酷睿i5和酷睿i7區別大嗎?

i5與i7的確有較大的效能差距,這是規格決定的,intel也需要這樣的差距來定位產品的高低端。在純cpu處理的應用場景,i7 7700hq要比i5 7300hq高40 左右。這個幅度足夠明顯了,只要你需要用到這類場景,那麼i7就會讓你的工作效率更高。然而,如果你購買筆記本不會遇到這種場景,只是想買來...

i3和i5處理器的區別,i3處理器與i5處理器有什麼區別麼?

i3是雙核雙線程 而且i3cpu整合顯示卡 i5是雙核4執行緒 也就是雙核模擬4核 並沒有原生4核好 其次i3沒有i5的主頻高 3級快取也沒有i5大 最後i5有睿頻加速功能 相當於自動超頻 玩遊戲還得是用i5比較給力 i3和i5都是intel 最新一代的酷睿i系列 處理器i5 雙核心支援超執行緒 支...