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 這裡是個編譯錯...