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,是中端的處理器。如...