關於for迴圈語句後的分號問題,在C語言中,for語句的後面加分號和不加分號有何不同,該分號有什麼作用?

時間 2021-10-17 04:38:55

1樓:可愛的小知道

for(表示式1;表示式2;表示式3) 語句

執行過程如下:

1) 先求解表示式1。

2) 求解表示式2,若其值為真,則執行for語句中指定的內嵌語句,然後執行下面第3)步;若其值為假,則結束迴圈,轉到第5)步。

3) 求解表示式3。

4) 轉回上面第2)步繼續執行。

5) 迴圈結束,執行for語句下面的一個語句。

有分號時就是沒有迴圈體時,等於是直接跳到3)步,去求表示式3了,也就是表示式3成為迴圈體,等價於

for(i=count; i >=1 ;i--)

sum=sum+i;

此後printf打出的是它執行完時sum的終值.

而沒分號時迴圈體為printf語句,也就是說第一次並不是求表示式3,而是先去執行printf了,----這就是為什麼第一次打出的sum總為0!!!也就是printf先於sum += i--執行了.

總之,兩種情況下,sum += i--語句執行次數是一樣的,但在沒分號情況下,因printf要比它早執行一次,因而最後sum終值沒有被打出來而已.

2樓:匿名使用者

這是因為如果加了分號,那麼最後一次是i=0,顯然此時不滿足i>=1因此迴圈體printf("\ntotal of the first %d number is %ld;\ni=%d.\n",count,sum,i)不執行,但是實際上sum的值仍然是正確的,可以在程式最後加一句printf語句以驗證,關於for語句的更多資料請查閱自己的c語言教材。

3樓:

樓上兩個說的都是對的.

有沒有分號都會加到1. 只是當i=1時進入迴圈體,這時printf語句執行的是加到2的結果,printf語句執行之後才會執行sum+=i--,然後sum才加到1了,這時i=0,不會再執行printf語句顯示加到1的結果.

如樓上所說,你可以再加一條printf語句檢視最後結果.

4樓:

不是的,不管時候有分號,都會加到1的.

執行流程是先判斷是否i>=1然後sum += i--,也就是說在i=1的時候還要進入迴圈體內執行一次."sum += i--"就是迴圈體

在c語言中,for語句的後面加分號和不加分號有何不同,該分號有什麼作用?

5樓:大野瘦子

加分號,表示這個迴圈是空語句,除了執行for()括號裡的,什麼都不幹,然後就執行下一行。

不加分號,那for迴圈後面的printf語句就是for迴圈的一部分,跟著for一起執行,但前提是for迴圈裡的條件要滿足。

分號代表語句結束。

例如:for(i=0;i<100;i++);

就等於:

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

6樓:翲燚

for語句有兩種用法,一種是跟單個語句,一種是跟**體

在跟單個語句時,由於在c語言語句預設是以分號結尾的,程式會將for (;;)之後直到第一個分號的**視為迴圈體來執行,例如下面三種情況:

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

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

foo1();

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

foo1();

上面三種寫法,都是呼叫foo1()函式10次。在下面一種情況裡,程式只會將foo1()函式迴圈呼叫10次,而不會將foo2()列入迴圈中,因為分號for語句在foo2()之前就已經結束了:

for (int i=0; i<10; i++) foo1(); foo2();

特別要提的是下面的兩種寫法,這兩種寫法的for語句的迴圈體都為空,程式都不會將foo2()列入迴圈,因此foo2()只會執行一次。這也是初學者常見的書寫錯誤。

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

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

foo2();

除了跟單個語句外,for語句還可以跟 圈起來的**體,如下面的例子:

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

在這種情況下,for語句可以不以分號結尾,程式會將**體內的所有語句迴圈10次。

7樓:匿名使用者

for後面是個迴圈體 你可以理解為一個語句塊for{}

平時是由一些語句組成的 如果直接加分號的話 說明不執行操作(空操作) 只做單純迴圈 沒有什麼意義 一般用在延遲函式裡

但這樣的寫法是不推薦的 因為很佔cpu 你可以試一下用三重迴圈 然後迴圈體只寫一個分號 執行你會發現電腦記憶體一下子飆很高 最簡單的電腦病毒就是這樣做的 用很高次的迴圈 做無意義的操作 讓你的電腦執行很慢

8樓:逍遙的夢

for(i = 0;i<5;你所說的是for()後面那個分號嗎?如果是的話,他後面的分號是一定要的,但是如果分號直接寫在括號後面卻沒有其他語句的話,證明這個迴圈是沒有可執行語句的,如上面1.

第二個例子分號前面有個語句,就是每當括號裡的條件成立時,他就會執行一次。

9樓:匿名使用者

分號代表語句結束假設你有一個陣列int a[5];那麼你可以這樣給陣列賦值for(int i = 0;i<5;i++) a[i]=i;這個是沒加分號的,那麼a[0]=0,a[1]=1....a[4]=4;for(int i = 0;i<5;i++);這樣加了分號,就代表結束了,相當於迴圈只執行了i,然後就退出迴圈了 a[i]=i;//這樣相當於只有a[4]=4; c語言中,分號代表語句結束

10樓:匿名使用者

c語言中";"表示一句的結束,長的句子可以分成多行寫,到最後才寫一個";"

for語句中後面的分號也是如此,根據迴圈結構和你的需求不同,有時會寫分號,有時候換到下一行寫,還是有分號的。

11樓:匿名使用者

這個 其實每一項**後面必須要加“;”,但是如果for後沒有語句 就多加一個“;”,代表那項**是空值 for ( i = 0; a[ i ] <= m; i++ ) ;;;;;;; 也沒人說你錯的

12樓:戀雲歌晨

剛試驗了一下,一個是加分號一個是不加分號的

13樓:想做一隻喵喵喵

推薦回答中最後那個迴圈出來是i=5,而不是4

c語言剛學,問一下小問題。for迴圈後面如果我加了個分號(for裡面都是有內容的)怎麼執行?老師說

14樓:

for迴圈正常判斷,只是滿足條件後不做任何操作,比如 for(i=1;i<10;i++); 最後i會變成10

15樓:匿名使用者

for(初始化表示式1;迴圈條件表示式2;變數增量表示式4)

for 迴圈就是按照1,2,3,4這四個步驟來的

16樓:哦米噶滴

c語言以分號分隔語句,如果沒有化括號,那麼for迴圈只執行下一段語句。

c語言中 for語句後面的括號裡有兩個分號是什麼意思啊?

17樓:lee羅亞輝

for語句後加分號就是表示執行for中的語句,不執行其他,也就是不帶迴圈體語句。

for後面跟的是迴圈體。如果不需要有迴圈體,也就是for括號裡面的三句就可以完成所有功能那麼就加個分號,表示迴圈體為空。比如 :

求字串s的長度for(len=0;s[len]; len++);這個, 單獨for裡面的三句就完成了所有功能, 不需要迴圈體, 加分號。

擴充套件資料

for迴圈是程式語言中一種迴圈語句,而迴圈語句由迴圈體及迴圈的判定條件兩部分組成,其表示式為:for(單次表示式;條件表示式;末尾迴圈體)。

for( ; ; )裡面是3個語句,兩個分號。第一個語句是開始前執行,第二個語句是判斷真假,如果真,就執行後面(大括號內)的**。第三個語句是每次執行完畢後執行的東西,通常第三個語句使用"i++"表示i=i+1的意思,用來遞增自變數i。

18樓:匿名使用者

表示這個迴圈沒有初始化,沒有條件判斷,沒有標誌變數的變化

它是一個死迴圈

這樣的迴圈其迴圈體內必須有跳出迴圈的語句,否則就沒法正常退出了

19樓:匿名使用者

你好!for(int i=0;i<100;i++) 分號主要是作分隔的效果。 意思就是說,第一個分號前面的是設定迴圈的起始大小;第一個分號與第二個分號間的是設定迴圈的最大次數;第二個分號後面的表示是遞增迴圈還是遞減迴圈。

java迴圈語句的問題,Java迴圈語句的問題。

第一次迴圈時 i 0 執行int k i 這句 後i 1,k 1 所以第一次列印的i 1 當二次迴圈時,因為前一次迴圈後,i 1了 再執行迴圈條件i 後,i變成2了,最後再執行 int k i i就等於3了,k也變成3了,此時列印的i當然是3 當3次迴圈時,因為前一次迴圈後,i 3了 再執行迴圈條件...

在C語言中什麼語句後要加分號,什麼語句後不用分號

融惜珊實傑 分號代表語句結束假設你有乙個陣列int a 5 那麼你可以這樣給陣列賦值for inti 0 i 5 i a i i 這個是沒加分號的,那麼a 0 0,a 1 1.a 4 4 for inti 0 i 5 i 這樣加了分號,就代表結束了,相當於迴圈只執行了i,然後就退出迴圈了 a i i...

Cwhile迴圈語句的問題,怎麼直接把if()跳過去了

if的條件不滿足就不會做,while why 1 是幹嘛?我沒猜錯的話應該是while why 1 吧 while why 1 條件判斷出錯了 why 1才是判斷 why 1是賦值,賦值成功就會返回true隨意while 語句會一直執行 c 裡if 和while gta小雞 仔細思考程式邏輯。程式要...