質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

709閲覧

3番目の引数のないforループ

kotoraemon

総合スコア21

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/09/26 14:17

c初心者です。
for ループは、for (初期化式;条件式;更新式) という形のものと理解しています。
コードを読んでいて、三番目の引数のないforループが出てきました。
この場合は、どう動くのでしょうか?
nused は整数です。

c

1for (obs=nused-1; obs>=0; ) { 2 ・・・計算・・・ 3} 4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

C

1for (expr1; expr2; expr3) { 2 {block} 3}

C

1expr1; 2while (expr2) { 3 {block} 4label: 5 expr3; 6}

と、動作的には同じです。
※ただし{block}のところにcontinue;文があればlabelに飛びます。
※クラシックなCに限って言えばという話ですので細かい突っ込みは無しで…。
expr3が省略された場合はそれがループの最後に実行されないだけの話です。

あと、細かいですけど、forの括弧の中の式は「引数」とは呼びません。
引数とは普通、関数呼び出しの括弧の中の式のことです。

(追記)
expr2を省略した場合に対しては上記のwhileを使った説明ではダメでしたね…。

投稿2021/09/26 14:25

編集2021/09/26 14:51
itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotoraemon

2021/09/26 14:38

ありがとうございます。 上の例の場合は ```c obs = nused-1; while (obs>=0) { {block} label: } ``` ということですね。 するとnusedに例えば20などの自然数が入った場合、このコードは繰り返しではなくて、{block}の部分が1回のみ実行されるということになるのでしょうか?
itagagaki

2021/09/26 14:41

{block}でobsが変更されて obs<0 となるまで{block}の実行が繰り返されることになりますね。
kotoraemon

2021/09/26 14:47

なるほど、{block}の中でupdateするのですね。よく分かりました。疑問が解消されました。ありがとうございました。
guest

0

for(ループに入る前に実行するコード; ループ継続条件; ループの繰り返し時(継続条件判断直前)に実行するコード)
なので、ループの繰り返し時に実行するコードが何も無いということです。文では無いですが、空文に相当。

1つ目が省略された場合も同様。
2つ目が省略された場合は、これは覚えるしか無いですが「常にループ継続」という意味になります。この場合はbreak等で途中から抜けるしか無い。

なお、それらは「引数」じゃないです。

投稿2021/09/26 14:35

otn

総合スコア84589

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotoraemon

2021/09/26 14:49

ありがとうございます。引数ではないですね。質問文を編集できればいいのですが。
otn

2021/09/26 15:50

質問文は編集できますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問