C語言中的一個小問題?

在c語言中

for (...)
{
for (...)
{
for (...)
{
}
}
}

for (...)
for (...)
for (...)
{
}

有什麼區別?


for 對圓括弧後面那個語句循環;

大括弧可以把一堆語句「當作一個語句來用」。


來,跟我念:

一組語句可以組成一個語句塊,方法是在這組語句開始之前加上{,在結束的地方加上}。一個語句塊可以被C編譯器視作一個語句。

例如:

for(. . .)
{
s3 = s1 + s2;
mul = s3 * c;
remainder = sum % c;
}

這就是一個語句塊,以{開始,}結束。在這裡for是一個C語言關鍵字。

語句塊提供了一個將多個語句當作一個語句來處理的方法。很多C語言的關鍵字只能處理一個語句(比如for)。如果你想用這些關鍵字來控制很多的語句,你可以將這些語句放到一個語句塊中,C關鍵字就可以把它當作一個語句來處理了。


沒有區別。

如果不用大括弧,每一個for只能作用一個語句,而每個for作用一個for就剛好符合這一點。


知乎這都什麼地。。。


for(auto i : is)
for (auto j : js)
for (auto k : ks)
{
Fuck(i, j, k);
Shit(i, j, k);
}

for(auto i : is)
{
for (auto j : js)
{
for (auto k : ks)
{
Fuck(i, j, k);
Shit(i, j, k);
}
}
}

沒有區別


謝邀。

1,for()後面加一條語句的形式是簡化版的for,這種情況只能循環一句代碼。

2,加了大括弧就可以循環幾條語句。

3,一個for循環可以看作是一條語句。

所以,如果你只需要寫一句話的循環,那就沒區別。


先說下for語句的原理

for(初始賦值;判斷條件;循環後執行)
{
循環內容;
}

初始賦值:只在第一次進入循環前執行,以後每次循環都不會再執行

判斷條件:判斷條件為真,進入循環,執行循環體,判斷條件為假,退出循環

循環後執行:每次執行完循環內容,才會執行,一般用來控制循環變數

循環內容:你設計的程序,需要重複執行以達到目的

for本身也是一條語句

可以這樣寫:

for(i=0;i&<10;i++) 語句1;

也可以這樣寫:

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

還可以這樣寫:

for(i=0;i&<10;i++) { 語句1; 語句2; ... }

甚至你還能這樣寫:

for(i=0;i&<10;語句1,i++);

這都是一條語句

這些都是根據你的需求來用的,你只要搞清循環運行的順序你就知道該怎麼用for的嵌套

所以:

for(變數;條件;執行)
for(變數;條件;執行)
for(變數;條件;執行)
{
語句;
}

for(變數;條件;執行)
{
for(變數;條件;執行)
{
for(變數;條件;執行)
{
語句;
}
}
}

在某些情況下是沒有區別的,這都是根據你設計的循環需求而相應的選擇適合的寫法

比如:

for(變數;條件;執行)
{
語句1;//控制內層變數
for(變數;條件;執行)
{
語句3;//控制外層變數
for(變數;條件;執行)
{
語句;
}
if(條件) break;//滿足條件後,退出循環
}
語句2;
}

如果你需要一些複雜的控制,明顯第二種更好寫,更簡單,可讀性更高

其實不管什麼情況我都比較推薦第二種寫法,可讀性更高,更便於理解,方便自己也方便他人閱讀理解

其實for的玩法還是很多的,只要你明白你是想用它來達到某些目的,學會靈活使用,怎麼寫都是可以噠

比如:

for(;;)
{
語句1;
語句2;
...
if(條件) break;//滿足條件退出循環
}

這就是一個死循環,裡面的 if(條件) break 就是控制循環退出的,這樣用是不是感覺和while又很相似,是的,其實理解了,怎麼用都是你自己的事

再舉個例子:

i=8;
for(j=0;i=j;j++);

or

i=0;
for(j=0;i&<=8;j++) { i=j; }

這只是我舉得例子

執行的判斷條件不一定是要和你的循環初始條件有關,學會靈活應用很重要

-----------------------------------------------------------------------------------------------------------------------------------

就想到這麼多,看懂了,喜歡的話就贊一下吧。~


增加代碼行數,可以多加錢


輪子哥跟我們搶送分題。


你不知道可以省略大括弧嗎


來個簡單的,

for(){

語句1;

}

for( )

語句1;

是沒有區別的;

然後多嵌套幾個for循環就是題主的結構了。

如果某個循環中有多個語句,就要用大括弧了。

比如:

for( )

for( ){

語句1;

for()

語句2;

}

此處大括弧是不能省略的。

大括弧是否能省略取決與循環內語句條數。

其他類推。

(誰能告訴我怎樣才能把縮進顯示出來-_-||)


1:你竟然寫了這麼多嵌套(摔桌)

2:耶,我把一個很複雜的邏輯拆出來了


第一個更方便修改

第二個更好看

以上


沒有什麼區別吧!你前兩個for後面只有一個語句。


#define forever for(;;)

forever

forever

forever

;

跟這個一樣,沒區別

很多答主說的是假如裡面有其他語句的時候,語句和語句塊

我覺得既然題主只是問有沒有區別

直接說沒區別就得了,(逃


不加括弧的話,for只針對緊跟它的第一條完整語句循環;

加括弧的話,for對跟在它後面那個大括弧里的所有語句循環。


沒有區別,你這個縮進真是看些難受


好像,只是,套了,好幾個,括弧


帶大括弧的語句塊只包含一行語句,可以不用寫大括弧! 嵌套多不推薦這麼寫


for

(while)

if

中,如果你只寫一個條件就可以不用大括弧。。

頭痛while都拼錯了。


推薦閱讀:

C 指針傳遞變數為什麼無法修改變數值?
不學C語言,直接學C++會有問題嗎?
怎麼理解 C 語言是面向過程的語言,C++ 是面向對象的語言。?
gcc環境下不能使用gets怎麼辦?
怎麼理解C語言的複雜聲明?

TAG:C編程語言 | C編程 |