1樓:匿名使用者
這種演算法要用例子才能說明的了!比較全面的例子好像這樣:
當i=5時,求s=(++i)+(++i)和s=(i++)+(i++)的值
當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.
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.
相信你看得懂這個例子,基本上就會怎麼算了!
i--和--i跟i++和i++是一樣演算法的,只不過一個是加一個是減!
------白豬(幸福快樂)
2樓:匿名使用者
後自增i++與前自增++i本身都是先進行自增(++)操作,然後在進行賦值等操作,但是這裡容易搞錯的問題是:後自增操作符即i++返回的是將運算元原來的、未修改的值作為表示式的結果值;前自增操作符即++i返回的是將修改後的的運算元的值作為表示式的結果值。尤其要注意的是:
在這之後前自增和後自增中i值都增加了1。
下面來看一個例子:
#include
using namespace std;
int main ( )
可以**結果為: a = 10 b = 11我們將此程式編譯執行後發現,結果確實如此。現在應該明白了吧。
同理i--和--i也是如此
3樓:憨憨漂移
兩者都是i的自加,也就是說兩個運算執行之後i都是比原來大1,不同的它們都是表示式,表示式++i的值就是i自加後的值,而++i是i自加前的值,同理--i與i--也是這個道理
4樓:匿名使用者
給你舉個例子啊:
int a=0,b=0,i=1;
a = i++;
b = ++i;
那麼輸出的結果 a=1,b=2;
因為 i++,是先將i的值賦給 a,然後i再+1++i是先將i+1,也就是2,然後再賦給b自己體會一下。。。
5樓:匿名使用者
先做與後做的關係,在前的就先做計算,在後的就先做取值
6樓:
i++就是先用i再++
++i就是先++在用i
++就是+1的意思
...比如i=3;
b=i++就是說b=3,完成之後讓i變成4b=++i就是先讓i++變成4,然後b=4其中++i比i++效率要高些
7樓:匿名使用者
i++就是先用i再++
++i就是先++在用i
++就是+1的意思
8樓:浩劫
具體可以看我的部落格,敲了一些**看上去更詳細一點:++i、i++、i+=1、i=i+1的區別
9樓:匿名使用者
#include
using namespace std;
int main()
在c++語言中,i++與++i有什麼區別
10樓:匿名使用者
先看一段**:
#include
int main()
++和++i的區別就是:
i++ :先引用,後增加
++i :先增加,後引用
換句話就是:
i++ : 先在i所在的表示式中使用i的當前值,再讓i加1++i : 先讓i加1,再在i所在的表示式中使用i的新值取決於++和i的相對位置:
++在i前面,i先加1,然後在表示式中用i的值;++在i後面,先在表示式中用i的值,然後i再加1。
11樓:
兩者都會將i自增1,區別是返回值。
i++返回i自增之前的值,++i返回i自增之後的值。
比如,i=1
a=i++,則a=1,i=2,a為i自增前的值a=++i,則a=2,i=2,a為i自增後的值
c語言 i++和++i什麼區別?
12樓:楓璽
i++和++i都是c語言裡的自增,但是它們自增的順序不同。++i表示,i自增1後再參與其它運算,而i++ 則是i參與運算後,i的值再自增1。
for迴圈裡迴圈變數增值用i++,而不用++i是因為在迴圈結構裡需要迴圈變數來結束迴圈,而使用i++則會導致本來應該繼續的迴圈少執行一次,所以迴圈結構裡通常都是迴圈變數在一次迴圈結構執行完成之後再自增。
擴充套件資料i++和++i前置後置區別的例子:
1、a = i++;
相當於 a = i; i++;
2、a = ++i;
相當於 i++; a = i;
3、int i=3;
int j=4;
int a = i++;
int b = ++j;
printf("%d, %d\n", a, b);
結果是3,5。++前置:i自增1後再參與其它運算;++後置:
i參與運算後,i的值再自增1」。很明顯,a = i++;由於是先執行賦值運算,再自增,所以結果是a=3,i=4;而b = ++j。
13樓:丿染指流年丶丶
c語言 i++和++i的區別:
1、i++式子值為i原來的值,就是通俗說的「先賦值再加1」;
2、而++i式子值為i變化後的值,也就是「先加1後賦值」。
而在for迴圈中,如果要表示遞增,兩種都可以。
14樓:匿名使用者
對於變數i來說都會在原來基礎上加1的,重點區別於式子本身的值;
1、i++式子值為i原來的值,就是通俗說的「先賦值再加1」;
2、而++i式子值為i變化後的值,也就是「先加1後賦值」;
在for迴圈中,如果要表示遞增,兩種都可以。
15樓:匿名使用者
下面我們通過一些例項來深入理解自增運算子的特性,自減運算子同理自悟例:int i=3;
int j=4;
i++;
++j;
printf("%d, %d\n", i, j);
對此,eric想大家都不會有什麼困惑,結果就是 4,5;下面我們來做一點小改動:
int i=3;
int j=4;
int a = i++;
int b = ++j;
printf("%d, %d\n", a, b);
結果又是多少呢?這裡就開始體現出++前置與後置的區別了,結果是3,5。結合此例,我們回頭再來理解一下「++前置:
i自增1後再參與其它運算;++後置:i參與運算後,i的值再自增1」。很明顯,a = i++;由於是先執行賦值運算,再自增,所以結果是a=3,i=4;而b = ++j;
則因先自增,然後再賦值,所以b,j均為5。
16樓:匿名使用者
i++和++i相同之處是i都自增一,不同是i++表示式的值就是i,因為i++是先賦值後加值
而++i表示式的值是i+1,因為++i是先加後賦值如,i=1,i++表示式為1,++i表示式的值為2,至於你說的for迴圈裡迴圈變數增值 要用i++ 而不用++i ,個人認為從迴圈變數(i)增1考慮,兩者沒有區別,應該要看到完整的程式才能說用哪個
希望這些對你有用!o(∩_∩)o...
17樓:匿名使用者
i++表示遞增不在迴圈中則表示i的值+1;
i++與++i的區別是
i++是先操作後賦值 也就是如果你在此輸出i++;
還是輸出的i的值,便是你在i++;後面再寫一句輸出語句則i的值就變了;
而++i則是先賦值後操作,同理在++i的時候輸出會得i+1的值,在後面輸出也一樣
18樓:匿名使用者
您好!通俗來講以++為例,++a表示先+1後賦值,a++表示先賦值後+1;--則與之相同,-1而已。
比如int a=1;int b=++a;b的值就是2,a的值也是2。如果是int b=a++,則b的值是1,a的值是2。這都是指的區域性變數。--類似
for迴圈裡也可以++i,for迴圈裡的++i沒有賦值順序可言,比如for(int i=0;i<10;++i)也是從0到9迴圈
希望能幫到您!敬請採納!
中國物聯網校企聯盟
19樓:匿名使用者
i++的作用是先對i進行操作再++;
如: int a = 1;
int b = a++; //此時先運算b=a,再a++,故b=1,a=2
int c = --a; //此時先--a,再運算c=a,故c=1,a=1
20樓:匿名使用者
他們主要區別在於:如i=5
++i是先把i的數值增加1,在使用該值如(++i,那麼使用的值就是6,)
i++是先使用該數值,使用後在i的值在+1如(i++,那麼使用的值就是5,但是該句話執行之後i的值依然是6 )
for迴圈裡兩者是一樣的效果
21樓:匿名使用者
錯略低看,++i和i++的作用相當於i=i+1,但是++i和i++的不同之處在於++i喜歡i先執行i=i+1後,在使用i的值,而i++是先使用i的值後再執行i=i+1.
22樓:夢之陽
++i是i先加1 在計算 i++先計算在加+1! i++和++i都可以用只不過初值不同!!不過一般都用i++!!!
23樓:匿名使用者
i++是先運算後自加,而++i是先自加後運算!
24樓:經沙陳峰
一直以來,++
--語法浪費了太多人的時間。說句實在話,++--在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++。
而且,這也是一種好的程式風格:++
--語句如非特殊需要,請單獨一行使用。
i++和++i命令有什麼區別?
25樓:蟲心菜
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。
c語言中和有什么區別,c語言中「 」和「 」有什麼區別?
c語言中,表示賦值 如a b,表示把b的值賦給a 表示等於 如a b,表示a與b相等!等號是 賦值號是 int a 1,是把1賦值給a,a 1,就是a是常值1 有區別 是 賦值語句,用來判斷是否相等 如 if x 10 x如果等於10 則括號裡的值是1執行,x不等於10 則括號裡的值是0 不執行如果...
在C語言中陣列和連結串列有什麼區別
要說這個區別,你要先知道資料結構。要說清楚資料結構要一本書的內容,所以我只能抽個直接相關的東東來說一下 線性表。線性表 邏輯上 是一張二維表,裡面有元素和相應元素的位置。物理上 線性表以兩種形式在記憶體中存放 順序表和鏈式表。這順序表要求 在記憶體中連續的記憶體地址存放。可看成陣列 而鏈式表不要求以...
c語言中if和switch有什麼區別
布依秋 總體來說,if語句由於在英語字面上意思比較直觀,就是 如果 所以比較容易理解。就是對 如果 情況的判斷和處理。而 switch 的功能其實和if差不多,但是比較容易出錯的地方就是,在switch語句中,如果在分支中不加break。容易造成邏輯的錯誤。新手很容易犯這個錯誤 湯贊悅 if 用於單...