c語言中 i 和i 有啥區別啊

2021-05-05 17:03:36 字數 6002 閱讀 1489

1樓:寫在楓葉上的故事

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。

2樓:梅信望鵑

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;

inta=i++;

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

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

如int

i=10;

inta=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。

3樓:六野枝安民

一直以來,++

--語法浪費了太多人的時間。說句實在話,++--在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++。

而且,這也是一種好的程式風格:++

--語句如非特殊需要,請單獨一行使用。

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的初值為1的話,

x[++i]相當於x[2],而x[i++]相當於x[1]

說明:不管++寫在i的前面,還是後面,對於i本身來說,都會自增。

6樓:濯振饒黎

中間這個

t[i]=s[i]

同時也是迴圈條件,每次執行時,先進行賦值,再判斷t[i]的值(因為賦值表示式的值就是左邊變數的值),如果為零則退出迴圈,否則繼續迴圈。這其實是把迴圈體與迴圈條件合併了。

7樓:鍾圖丙冬

++i是先將i=i+1;然後再用此時的i進行下面的步驟,i++是先在下面的程式中用此時的i的值,然後再i=i+1;

8樓:獨初雪冉笛

沒有什麼不同啊!都是將i使用之後再加一,對於陣列元素s[i++]和s[i]是相等的。s[i++]

只是比s[i]

i++寫法上簡單一點,其實功能是一樣的。

9樓:滑卓然春寒

對於整個表示式沒有區別,但是i的值有區別,++i,是i會自增1,而i++,i的值就不會變,你只要記住i在前面的,i的值就不會變,i在++後面,i的值就會加1,

我以前看是學c的時候,也沒有分清楚,後來就是用這種方法分清楚的

10樓:伍冰珍展思

c語言中++i與i++的區別是:++i是i先遞加後再引用i,而i++則是先引用i後,再遞加i;

11樓:鄧佩蘭懷莞

有的!比如說int

i=0;char

ch[20];

那麼ch[i++]就相當於ch[0],i=i+1=1;

而ch[++i]就相當於i=i+1=1,ch[1];

也就是說i++是先使用後自加,而++i是先自加再使用!

12樓:戲君昊卑西

i++和

++i要是單獨佔一行的話,是沒有區別的,都是將i的值加1.但是如果被巢狀在其他語句中是有區別的。

例如:i=

1;if(i

++)//執行結束後

對i+1,這裡i=2

if(++i)

也就是i++,是使用i的值以後,再對i+1;而,++i是先進行i+1,然後再使用i的值。

13樓:蓋皛顧釗

i++和++i的區別一個是變數的值先進行運算再對i進行加1,後者是先把變數i加1再把新的i值進行運算。

比如初始i=3,,現在有n=i++;則n的值為3,而這個語句執行後i=4若n=++i則,則運算後n=i=4

14樓:蒿焱洋蔓蔓

這個跟你講一下吧:

如果i=1;

執行a=i++;a的值是1,執行完後i的值為2執行a=++i;a的值是2;執行完後i的值為2總結說:++i是先運算再+1;i++是先加一再運算。

15樓:牽國英酈巳

這裡沒有區別,都是比較這兩個變數的值,並且得到的結果也相同。

16樓:問俠鐵泰初

舉個列子來說明一下;int

i=0,number1,number2;number1=++i;number2=i++;printf("加號在前加號在後--number2=%d",number2);執行結果:number1=1,number2=0;這個就可以說明number1=++i可以分兩步:先運算i=i+1,在賦值number1=i;而number2=i++:

是先賦值number2=i,然後再自加i=i+1;最後的i值都為1;

17樓:簡玉英員環

i++和i--,首先i必須是整數型別!

i++:

整個式子的值是i,譬如i=

3;intp=

i++;

這裡面p的結果是3,計算後,

i的值要加1

,此時i的值為4;

同理對i--;

++i:

整個式子的值是i+1,譬如i=

3;int

p=++i;

這裡面p的結果是4,計算後,

i的值要加1

,此時i的值為4;

同理對--i;

希望可以幫到你!

純手打~

18樓:斯倫愈德元

i++表示先使用i的值,然後再對i進行計算。而++i則是先計算i,然後再使用i的值。

19樓:封秀雲皮霜

i++是先使用變數的值,後加1;

++i是先自加1,然後使用變數的值。

本例中:

str[j++]=str[i];

相當於:先賦值,後自加。

str[j]=str[i];

j++;

20樓:田旋荊璟

i++是先引用後自加。如n=0;i=0;n=i++;則結果為n=0;i=1;

++i是先自加後飲用。如n=0;i=0;n=++i;則結果為n=1;i=1;

21樓:宜羽讓夢影

++i和

i++都會對i

=i+1的運算

區別在於++i返回的是i+1,而i++返回的是i。

比方說a

=++i;和a

=i++;a的值就不同

++i和i++有什麼區別啊?

22樓:匿名使用者

至於++i和i++有什麼區別,舉個例子

1.a = i++; 等校為

a = i;

i = i + 1;

2.a = ++i; 等校為

i = i + 1;

a = i;

i++和++i的 最重要的區別大家都知道就是 +1和返回值的順序

但,兩這還有一個區別(在c++中)就是i++在實現的時候,產

生了一個local object

class int;

//++i 的版本

int int::operator++()

//i++ 的版本

const int int::operator ++(int)

所以從效率上來說++i比i++來的更有效率

具體細節你可以看more effective c++ 的m6

看看c++類過載運算子就知道了。

對於i++的實現是:

int temp;

temp = i;

i = i+1;

return temp;

而++i的實現是:

i = i+1;

return i;

比如printf("%d",i++);是先輸出i值隨後i自加,而printf("%d",++i);正好相反

for(operation1;operation2;operation3)

都是按operation1

operation2

//do something

operation3

的順序來執行的

而i++與++i在單獨的語句中結果是一樣的。

簡單而言: ++i 在 i 儲存的值上增加一併向使用它的表示式 ``返回" 新的, 增加後的值; 而 i++ 對 i 增加一, 但返回原來的是未增加的值。

ii2和i2的區別,C語言i 2和i 2的區別

i i 2 和 i 2的區別主要有以下三點 1 運算順序不相同 簡單說就是i i 2 比 i 2多了一次對變數 i 的運算。i i 2是先進行i 2的運算得出一個結果,再賦值給i。i 2就是先賦值然後在進行加法。2 得到的結果不相同 c語言中i 2 等同於 i i 2 這是簡略寫法,但是計算時演算法...

c語言中for i 5 i i與for i 5 i0 i為什麼迴圈次數一樣了

for i 5 i i 與for i 5 i 0 i 的迴圈次數是不一樣的,第二個比第一個多迴圈一次。因為第一個的迴圈條件 i 表示 i 不為0時迴圈條件成立,故迴圈5次結束 而第二個迴圈條件i 0表示 i 大於或等於0時迴圈條件成立,故迴圈6次結束 for i 5 i i 中,中間那個i作為一個布...

c語言中ltgt和有什麼區別C語言中和有什麼區別

舉例說明 例如你使用的是turboc include 代表編譯時直接在turboc軟體設定指定的路徑 預設是turboc所在資料夾下的include資料夾 中尋找裡面是否有stdlib.h的庫檔案。如果有,直接載入 如果沒有,報錯 無法找到庫檔案 include stdlib.h 代表編譯時先尋找你...