1樓:虛源草
這兩個程式是不同的,for語句在不加大括號情況下只迴圈到之後的一個分號,即前一個程式迴圈體包括printf……,輸出為1234;後者迴圈體中不包括printf……,執行完for語句後,再執行printf……,輸出為5。
2樓:匿名使用者
第一個for迴圈的迴圈體內有一條語句,那就是printf,每次迴圈都要執行一次迴圈體內的語句,也就是printf,所以依次輸出1234。
而第二個for迴圈內沒有語句,所以迴圈四次後i=5,最後輸出5。
不懂可以找我。呵呵
3樓:匿名使用者
for(i=1;i<5;i++)
printf("%d",i);
顯然是執行printf("%d",i);四次,所以結果是1234而for(i=1;i<5;i++)
;printf("%d",i);
這個是執行這段程式的第二行4次,即執行4次空操作,此i=5;
所以顯示5
4樓:
for語句屬於迴圈語句,迴圈的結束點是以第一個分號來限定的。
上面的 printf 就在迴圈裡面,所以會輸出 1234下面的迴圈到第一個分號結束,就是空迴圈。
迴圈結束後輸出一次i的值 就是一個5.
5樓:匿名使用者
顯然不一樣
首先第一個列印輸出是在迴圈裡面的,每執行一次迴圈,他就輸一次而第二個迴圈後面是個空語句,等效,相當於他光執行了i的迴圈,但每次什麼都不執行,然後列印輸出位於迴圈外,只執行一次
你單步除錯看看變數怎麼變,箭頭每次怎麼走,很直觀的希望你能明白^-^
c語言for語句中的條件問題
6樓:匿名使用者
1、for是c語言中的一個關鍵字,主要用來控制迴圈語句的執行。
2、舉例說明for語句的使用方法:
int i;
for(i=0; i<3; i++)
// i=0是初始化部分;i<3是迴圈判斷條件部分(當滿足此條件時才進入執行for迴圈中的語句);i++是執行完迴圈體語句後的操作
// 上面的for語句就是控制輸出3次helloworld
7樓:匿名使用者
仔細看(1)(2)(3)(4)(5)這樣,你應該能瞭解了吧。c語言中的for迴圈語句使用最為靈活,不僅可以用於迴圈次數已經確定的情況,而且可以用於迴圈次數不確定而只給出迴圈結束條件的情況,它完全可以代替while語句.
for(表示式 1;表示式 2;表示式 3)語句
它的執行過程如下:
(1)先求表示式 1.
(2)求表示式2,若其值為真(值為非0),則執行for語句中指定的內嵌語句,然後執行下面第三步 做若為假(值為0),則結束迴圈,轉到第5步.
(3)求解表示式3
(4)轉回上面第(2)步驟繼續執行;
(5)結束迴圈,執行for語句下面的一個語句;
for(迴圈變數賦初值;迴圈條件;迴圈變數增值)語句
如for(i=1;i<=100;i++)sum=sum+i;
它的執行相當於
i=1;
while(i<=100)
顯然,用for語句更簡單、方便。
說明:(1)for語句的一般形式中的"表示式1"可以省略,此時應在for語句之前給迴圈變數賦初值.注意省略表示式1時,其後的分號不能省略.如for(;i<=100;i++);
(2)如果表示式2省略 即不判斷迴圈條件,迴圈無終止地迴圈下去,也就是認為表示式2始終為真.
例如:for(i=1;;i++);
相當於i=1;
while(1)
(3)表示式3也可以省略,但此時程式設計者應另外設法保證迴圈能正常結束.如:
for(i=1;i<=100;)
這個例子的迴圈增量沒有放在表示式三的位置 而是作為迴圈體的一部分 其效果是一樣的.
(4)可以省略表示式1和表示式3,只有表示式2 即只給迴圈條件.
如for(;i<=100;)
這個相當於
whlie(i<=100)
(5)三個表示式都可以省略,如:
for(;;)語句
相當於while(1)語句
即不設初值 不判斷條件(認為表示式2為真值)迴圈變數不增值,無終止的執行迴圈體.
(6)表示式1也可以是設定迴圈變數初值的賦值表示式,也可以是與迴圈變數無關的其他表示式.如:
for(sum=0;i<=100;i++)
for(sum=0,i=0;i<=100;i++)
等等寫法.
8樓:匿名使用者
y<5起作用用下面這個程式可以測試出來int main()
return 0;
} 原理: int i = 1, 2;最後i的值是2;x<5 有一個值真或假 y<5 也有一個值真或假表示式 x<5, y<5的最後的值 是y<5的值
9樓:匿名使用者
xy的初始值都是0 xy不能超過5 迴圈1次x自加1 y自加1
xy等於5了就跳出迴圈
10樓:匿名使用者
x、y都成立時候,條件才成立,才能執行下面的迴圈語句
c語言for迴圈語句的問題
11樓:每壹段路都是壹種領悟
for(初始值:可以為空,但是後面分號不能省;限制條件:不能為空,後面分號不能省;增量:可以為空,後面沒有分號)
int main()
for()中不能定義
12樓:馨雲逸夢
for(表示式1;表示式2;表示式3)
執行順序:1.表示式1,程式開始時便執行,且只執行一次。
2.之後執行表示式2,當表示式2為真(非0),執行迴圈體3.最後執行表示式三
之後重複 2、3步驟,直到表示式二為假
原則上來講,表示式1、2、3都可以為空,只要迴圈體內部有可以控制迴圈結束的條件就不會出現死迴圈
希望我的回答對你有所幫助
13樓:
for(int i=0;i<10;i++)//確定符號是英文半形
14樓:餛飩
c的某些編譯器是不支援,「隨手宣告變數」的。這個**,放在gcc裡,可能就沒事兒。。。
15樓:小忍and奏
for(a=1;a<0;a++)
{}因為這是c語言 不能在括號裡定義
16樓:冷血西伯利亞狼
變數的定義一般不能放在for迴圈中
17樓:怒戰九人黑
for 迴圈就不是個問題
c語言中關於多個for迴圈的問題 5
18樓:匿名使用者
#include
void main()
19樓:匿名使用者
1、最開抄
始進入的是第一層for迴圈,襲在進入第二層for迴圈,一直bai到最後一層dufor迴圈執行完,再返回上一zhi層for迴圈一次,進入dao下一層迴圈,一直到所有迴圈結束。
2、例如:
for(int i=0;i<5;i++)
printf("\n");
}/*這裡是3層迴圈,第一次是i=0,j=0,l=0,一直l=4;在返回j=1,l=0,一直到l=4;再返回上一層迴圈,直到j=4;再返回i=1,直到i=4結束整個迴圈,結果就是迴圈125次:
(最外層是是對應5組,第二層是對應25行,第三層是對應0—4)*/
20樓:聽不清啊
圖中二層迴圈都是迴圈3次,所以就輸出9個aa
迴圈全部結束後輸出bb一次。
21樓:
這個實際bai上不是 多個for迴圈的問du題,而是一個語zhi
句的作用範圍dao的問題
當你需要迴圈的語回句只有一句的時答候,就可以寫成這樣
for(i=0,i<3;i++)
printf("aa\n");
如果有多個的話
就需要用大括號括起來
for(i=0,i<3;i++)
括起來的話,這三句都將迴圈三次。
而不論大括號裡括了多少條語句,for迴圈本身也只算一個語句。
因此,可以分析你剛才那段**
for(i=0;i<3;i++)
for(j=2;j<5;j++)
printf("aa\n");
printf("bb\n");
先看外邊的for ,它沒有使用大括號{} ,因而只將離他最近得一條語句進行迴圈
而這條語句也是一個for迴圈。 第二個for 迴圈也沒有大括號,因此也只將離他最近得語句進行迴圈。即將printf("aa\n");進行迴圈。
而最後的printf("bb\n");沒有在任何迴圈裡邊,所以只執行一次。
for迴圈的巢狀,從外邊進入裡邊,將裡邊的迴圈當做一個整體,幾次迴圈執行完畢後,再回過頭來進行外邊迴圈。總的來說,將裡邊的迴圈看做整體,比較有利於理解。
22樓:劉鴻波
你的程式相對於bai下面這段代du碼:
#include
void main()
}printf("bb\n");}執行
zhi順序如下:
i=0:
j=2;printf("aa\n");j++;
j=3;printf("aa\n");j++;
j=4;printf("aa\n");j++;
i=1;
j=2;printf("aa\n");j++;
j=3;printf("aa\n");j++;
j=4;printf("aa\n");j++;
i=3;
j=2;printf("aa\n");j++;
j=3;printf("aa\n");j++;
j=4;printf("aa\n");j++;
跳出dao巢狀迴圈
執行printf("bb\n");
所以版最終的結果是9個
權aa,一個bb
23樓:
#include
void main()
24樓:匿名使用者
執行的每一步 順序 如下
i=0,i=2,printf("aa\n");
i=0,i=3,printf("aa\n");
i=0,i=4,printf("aa\n");
i=1,i=2,printf("aa\n");
i=1,i=3,printf("aa\n");
i=1,i=4,printf("aa\n");
i=2,i=2,printf("aa\n");
i=2,i=3,printf("aa\n");
i=2,i=4,printf("aa\n");
printf("bb\n");
**這麼寫讓人 能好理解些。
#include
void main()
裡的**
for(j=2;j<5;j++)
}printf("bb\n");//這個print 不屬於任何循答環裡 所以只執行了1次}
25樓:匿名使用者
先是內層迴圈(即j),再迴圈i,因為沒加{}所以迴圈體只有輸出aa那個,最後退出兩個迴圈時才輸出一個bb,謝謝
26樓:匿名使用者
先執行一
抄次最外層的for語句,然後執行第二層的for語句襲,直到第二層執行完畢bai
,又回到第du一層的for語句執行一次
zhi,再執行第二層,結果是外迴圈的for語句執行3次,第二層的for迴圈執行(5-2)*3=9次,第二層的迴圈每執行一次就輸出一個aa,所以輸出9個aa,printf("bb\n")是在for語句的外邊,所以只在最後執行一次,for語句如果每次迴圈都要執行一條以上的語dao句就要在語句外邊加花括號,即如果要執行printf("aa\n");printf("bb\n");兩條語句的話就要寫成
這種形式。
關於c語言問題關於c語言的問題
void vtaskstartscheduler void privileged function 是函式定義,函式名 vtaskstartscheduler,void 表示該函式是無參函式,前面的 void 表示這個函式無返回值。privileged function 是巨集,預編譯期間,執行文字...
關於c語言的計算問題,關於c語言的計算問題
這涉及c的細節,我建議你記住 程式中的常量其實也存放在記憶體單元中,c規定運算運算子兩旁同類時運算結果與參與運算的數的型別相同,事實上時 加法器直接處理那兩個記憶體單元中的資料,並將結果送到另一記憶體單元,而這裡的 另一記憶體單元也是兩位元組長,因此他只接收到結果的低二位元組部分 及1的補碼 所以,...
關於C語言簡單問題,關於C語言一個簡單問題
c語言有兩個標準,c89 89年出的,c99 99年出的c89規定,在任何執行語句之前,在塊的開頭宣告所有區域性變數。在c99以及c 中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以宣告變數。編譯結果和c語言的編譯器實現有關,你用的可能是較老的c編譯器,只支援c89規定。簡單的講就是老的編...