c語言,i 和 i有什麼不同

時間 2021-05-05 20:19:21

1樓:萌士方小韓

先賦值在自增和先自增再賦值 並且前者會額外生成一個副本

2樓:以季宛映冬

i++表示遞增不在迴圈中則表示i的值+1;

i++與++i的區別是

i++是先操作後賦值

也就是如果你在此輸出i++;

還是輸出的i的值,便是你在i++;後面再寫一句輸出語句則i的值就變了;

而++i則是先賦值後操作,同理在++i的時候輸出會得i+1的值,在後面輸出也一樣

3樓:牢霜貫遊

表示式s1[i++]=s2[j++])

中包含兩個後++

執行過程為:

1、s[i]

=s2[j]

執行賦值表示式之後執行自增運算

2、i=i+1

3、j=j+1

如果是表示式s1[++i]=s2[++j])執行過程為:

1、i=i+1

2、j=j+1

3、s[i]

=s2[j]

執行賦值表示式之前進行自增運算

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

4樓:匿名使用者

i++和i--的區別:

1、運算方式

i++屬於自增運算,相當於i=i+1;

i--屬於自減運算,相當於i=i-1;

2、值的變化:

假設i=10,分別執行i++、i--後;

i++後:i=i+1=10+1=11;

i--後:i=i-1=9。

擴充套件資料:

無論i++,還是i--,這兩個公式既可以單獨存在,也可以賦值給另外的變數。當賦值引用的時候,他們的含義:

1、i++,先引用i的值,後增加i的值,

如int i=10;

int a=i++;

該程式執行後,a=10,而i=11。

2、i--,先引用i的值,後i的值減1。

如int i=10;

int a=i--;

該程式執行之後,a=10,i=9。

除了以上的用法外,還有一種表示法是++i或者--i,這種表示法i的值也會相應的自增1或者自減1,i的結果和i++與i--是相同的,但是當賦值給另一個變數時,對賦值的變數,結果卻存在差別,因為++i代表先增加,後引用,--i代表先減少,再引用。

例如同樣的程式,i=10,

如果int a=i++,那麼a=10;而int b=++i的話,b=11;

如果int a=i--,那麼a=10;而int b=--i的話,b=9。

5樓:手機使用者

++i在用時是i先自增1,再用這時的i值去參與計算;

i++是用增1前的i去參與計算,參與計算後i再增1;

例子:int i=0;

i++;

printf("%d",i);//這時打出的值為0;

printf("%d",i);//這時打出的值為1,因為i在上個語句中被用過了,本身的值增1

**********

int i=0;

++i;

printf("%d",i);//這時打出的值為1;

c語言,i--和--i有什麼區別,怎麼用?

6樓:璩恨雲赤朗

int i = 5;

int k = 5 - i --;

/*結果得0, i--並不在本行語句執行,只有本行語句執行完後,才真正的執行i-- , 所以本 行語句, i-- 還是5

*/int i = 5;

int k = 5 - --i;

/*結果得1,立刻在本行語句執行--i, --i變成4*/

7樓:塗軒

執行這兩個語句i都變成了i-1。但是i--本身的值依然是i,而--i的值就變成i-1了。

舉個例子

inta,i=5;

a=i--;這時候a=5

i=4a=--i;這時候a=4i=4

8樓:陽晶瑤羊楠

這要看你想要變數i的值,還是表示式的值,如果是要變數i的值,那麼,如果i=1;

i++和++i都會讓變數i自動加1,變成2.

如果你想要表示式的值,那就有所區別了,舉個例子:

如果int

i=1;

那麼表示式i++的值是1(先取i原有值作為表示式的值,而後i自動加1)

而表示式++i的值是2(先讓變數i自動加1,而後的i的值作為整個表示式的值)

9樓:零鴻福鬆甘

二者單獨寫沒有任何區別。

但是如果

i=3;

a=i++;

和a=++i;

就有區別了,前者a=3

後者a=4

10樓:須鵬池五琇

--i和i--都是自減運算子

--i稱為字首運算,i--稱為字尾運算

字首運算後,表示式的值為原變數值減1;

字尾運算後,表示式的值仍為原變數值;

而變數值不論字首運算還是字尾運算都減1。

例如:i=10;

--i的值為原變數值減1,是9;現在的變數i也是9i=10

i--的值為原變數值,是10;而變數i現在就是9

11樓:旁天藍萬曜

意思一樣,只不過你的程式有點問題,第二個程式中if(s1[i]

='\0')

應該為if

(s1[i]==

'\0')

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

12樓:蟲心菜

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。

13樓:匿名使用者

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。

14樓:關鍵他是我孫子

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

15樓:匿名使用者

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

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

16樓:匿名使用者

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

17樓:滾去學習

1、單獨使用時

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

2、進行運算時

i++是 i 先運算在加1

++i是 i 先加1再運算

18樓:難堪

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

19樓:糖糖又笑了

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

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

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

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

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

i先自增,然後再用

20樓:阿哲

剛好做copy

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

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

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

比如sum+=++i;

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

再比如sum+=i++;

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

21樓:匿名使用者

後置加加和前置加加

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

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

在C 語言中,i 與 i有什麼區別?那i 和 i呢

這種演算法要用例子才能說明的了 比較全面的例子好像這樣 當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...

本人不才,請指點關於C語言,i 和 i的問題

不能發傳送門怎麼辦 我給你私信過去吧,你給我留個id hi也可以每次看到這題我都斯密達 我解釋一下你帖子裡那個最佳吧 因為 是雙目運算子,要把左右兩邊的值都算出來才能加。先算兩遍 j 此時j為7,然後兩個7相加。然後14再和 j 相加,就是14 8,等於22 但是呢不同編譯器結果就不同,這種題實在沒...

c語言裡a 和 a有什麼不同

1,表示式的值不同,a的值是原a的值加1,a 是原a值例1int a 1,b b a printf d b 例2int a 1,b b a printf d b 2,a可以做左值,a 不可以 例1int a 1,b 5 a b printf d a 例2int a 1,b 5 a b 這裡是個編譯錯...