關於c語言的累加i和,關於C語言的累加,i 和 i

時間 2022-05-02 11:23:52

1樓:瀚漠

先說下i++和++i的區別:

i++是後加加,先做運算,之後i自加1, ++i是i先自加1,再做運算。

第乙個問題,列印 a++時,先運算就是先列印,之後a自加1,所以列印出來是1

第二個問題,滿屏的1是因為你的迴圈結束條件不對,就是無限迴圈,造成滿屏都是1

第一次迴圈:i = 10, 輸出10,10自加1為11,i = i/2 = 5

第二次迴圈:i = 5, 輸出5,5自加1為6, i = i/2 = 3

第三次迴圈:i = 3,輸出3,3自加1為4, i = i/2 = 2

第四次迴圈,i = 2, 輸出2, 2自加1為3, i = i/2 = 1

第五次迴圈,i = 1,輸出1,1自加1為2,i = i/2 = 1

第六次迴圈,i = 1,輸出1,1自加1為1,i = i/2 = 1。。

。以後就是無限迴圈。

所以這裡的迴圈條件需要修改,當等於1時不執行迴圈,改為:for (i = 10; i > 1; i/=2) 就可以了

2樓:

首先i++; ++i;

都是語句 。這個語句的值就是

i++ ==> (i; i=i+1)

++i ==> (i+1; i=i+1; )

就是分析這個。for(i=10; i>=1;i/=2)

開始 判斷條件 處理

i=10 i>=1 i++;後i=10 ; i/=2 後i=5

i=5 i>=1 i++;後i=6 ; i/=2 後i=3

i=3 i>=1 i++; 後i=4 i/=2後i=2;

i=2 i>=1 i++;後i=2 i/2後i=1;

i=1 i>=1 i++; 後i=2 i/2後i=1

....

後面永遠是i=1 死迴圈。無論你改i++,還是++i,i的結果都是+1.所以沒改變。

3樓:與子如初見

先說上面乙個,首先你得明白a++的含義,當自加運算子在變數的後邊的時候,是先使用變數,然後再自加。這樣的話a++就相當於先使用a,然後完了a = a+1.

再說第二個,應該是先輸出10 5 3 2 1 1111................

之所以會死迴圈是因為上面的語句跟下面的語句等價for(i=10;i>1;i/=2)

當i等於1的時候進入迴圈,然後輸出i,然後i++,i變為2,接著i = i/2 =1.又一次進入迴圈,是不是死迴圈了呢?

4樓:匿名使用者

這個記憶的時候,可以這樣記:看+號在前還是在後,就先加還是後加a=1;

printf("a=%d\n",a++);    /*先使用值,後加*/

a=1;

printf("a=%d\n",++a);    /*先加,後使用值*/

5樓:永恆旋律

肯定是1,比如i=1; a=i++; a肯定是=1的。但是再在後面寫個a=i;此時的a就是2; a=i++是先把i的值賦給a,然後再++。賦給a之後,i就變成2了, 但是a=++i;是先自加,然後再賦值給a, i=1;a=a++;這個a=2.

這就是i++和++i的區別,乙個先自加再賦值,乙個先賦值再自加。

你在你寫的那個print後面再加個printf("%d",i);此時輸出的肯定是2.

6樓:匿名使用者

i++ and ++i的不同

int i,a; i=10; a=++i(a的值是11)a=i++(a的值是10)

for 語句的執行順序是

for(1;2;3)

語句;執行1;執行2;執行語句,執行3,再執行2,執行語句,執行3直到2不成立為止;

c語言 i++和++i什麼區別?

7樓:楓璽

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。

8樓:丿染指流年丶丶

c語言 i++和++i的區別:

1、i++式子值為i原來的值,就是通俗說的「先賦值再加1」;

2、而++i式子值為i變化後的值,也就是「先加1後賦值」。

而在for迴圈中,如果要表示遞增,兩種都可以。

9樓:匿名使用者

對於變數i來說都會在原來基礎上加1的,重點區別於式子本身的值;

1、i++式子值為i原來的值,就是通俗說的「先賦值再加1」;

2、而++i式子值為i變化後的值,也就是「先加1後賦值」;

在for迴圈中,如果要表示遞增,兩種都可以。

10樓:匿名使用者

下面我們通過一些例項來深入理解自增運算子的特性,自減運算子同理自悟例: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。

11樓:匿名使用者

i++和++i相同之處是i都自增一,不同是i++表示式的值就是i,因為i++是先賦值後加值

而++i表示式的值是i+1,因為++i是先加後賦值如,i=1,i++表示式為1,++i表示式的值為2,至於你說的for迴圈裡迴圈變數增值 要用i++ 而不用++i ,個人認為從迴圈變數(i)增1考慮,兩者沒有區別,應該要看到完整的程式才能說用哪個

希望這些對你有用!o(∩_∩)o...

12樓:匿名使用者

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

i++與++i的區別是

i++是先操作後賦值 也就是如果你在此輸出i++;

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

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

13樓:匿名使用者

您好!通俗來講以++為例,++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迴圈

希望能幫到您!敬請採納!

中國物聯網校企聯盟

14樓:匿名使用者

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

15樓:匿名使用者

他們主要區別在於:如i=5

++i是先把i的數值增加1,在使用該值如(++i,那麼使用的值就是6,)

i++是先使用該數值,使用後在i的值在+1如(i++,那麼使用的值就是5,但是該句話執行之後i的值依然是6 )

for迴圈裡兩者是一樣的效果

16樓:匿名使用者

錯略低看,++i和i++的作用相當於i=i+1,但是++i和i++的不同之處在於++i喜歡i先執行i=i+1後,在使用i的值,而i++是先使用i的值後再執行i=i+1.

17樓:夢之陽

++i是i先加1 在計算 i++先計算在加+1! i++和++i都可以用只不過初值不同!!不過一般都用i++!!!

18樓:匿名使用者

i++是先運算後自加,而++i是先自加後運算!

19樓:經沙陳峰

一直以來,++

--語法浪費了太多人的時間。說句實在話,++--在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的區別,最好舉例說明

20樓:媯淑琴嚴鵑

i++是使用後再加1,如果i的初始值是0、輸出i++則為0

++i是使用前加1,如果i的初始值是0、輸出++i則為1

21樓:匿名使用者

前置的++,是變數先自增1,然後再作其他操作,後置的++,是先取變數當前的值操作,然後再自增1你的例子中,i的初始值是1,執行k = ++i;時,先執行了 i = i + 1,也就是i的值變為2,再把i的值賦給k,所以k的值是2,i的值也是2

執行z = i ++;時,先取i的值賦給z,此時i的值是2,所以z也是2,然後再執行i= i + 1,這條語句執行完成後,i的值變為3

關於C語言的問題,關於c語言問題

先說明一點,c語言中巨集和函式有些差別,巨集是 第乙個例子,double 1 2 這個呼叫實際上是2 1 2,看,x被為1 2,然後根據運算子的規則 實際上應該說是優先順序 先運算2 1,再加上2,所以結果是4。第二個例子就更簡單了,同樣是,toupper s i 這個呼叫,實際上它的 就是 a s...

關於c語言陣列和指標的問題,關於C語言陣列和指標的乙個問題

c 語言裡 1 形式邏輯不成立。2 要分清 乙個形式 出現在 宣告裡,還是 出現在語句裡,3 另外,字元變數 與 普通變數 有些 不同。下面只談字元 宣告 char s 10 hello s 是 陣列,初始化 hello 0 自動加 0 宣告 char p p 是 指標。宣告 char p s p ...

關於C語言的問題,關於c語言的問題

選a,輸入函式scanf 是不能指定小數點精度的,d也不對,因為輸入的必須是位址,可以改成scanf f a 就對了。scanf f a 答案是d,應為你定義了實數,實數本身就可以帶小數點的,沒必要申明,在輸出時申明保留兩位就行了。scanf a scanf函式對小數字數沒有限制!關於c語言的問題 ...

關於c語言for語句的迴圈巢狀,關於C語言for語句的迴圈巢狀

從裡到外。意思就是 i 0 j 0時先迴圈k.迴圈結束再執行i 0 j 1再迴圈k 一直這樣下去! for i 0 i 2 i for j 0 j 2 j for k 0 k 2 k 要是這樣看的話會不會好理解些,從裡到外。 意思是 k 的for 語句迴圈的次數 k j,而 j 迴圈的次數 j i ...

C語言關於malloc的用法,C語言關於MALLOC的用法

char a3 x strlen a1 y strlen a2 z x y 1 a3 char malloc z malloc是分配動態陣列儲存空間的函式,引用它必需包含標頭檔案 malloc.h 或 stdlib.h malloc的作用是分配指定位元組個記憶體空間,並返回該記憶體空間的首位址,但在...