• 締切済み

C言語における文法について

C言語でforループのかっこの中はなぜ,で区切るのでしょうか?

みんなの回答

回答No.4

次のプログラムを実行するのに for (i=1; i<=10; i++) sum += i; Cの内部では、↓のようなことをやっているため。 区切り(;)がないと何がなにやら...。 #include <stdio.h> int main(void) { int i, flag, sum = 0; i = 1; for_top: {sum += i;} i++; flag = i <= 10; if (flag) goto for_top; printf("sum= %d\n", sum); return 0; }

gayaldy21
質問者

お礼

返事が遅れ申し訳ありませんでした。ご丁寧なご回答有難うございました。

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.3

,じゃなくて;ですが、多分コンパイラを作るのが楽だったからだと思います。

gayaldy21
質問者

お礼

返事が遅れ申し訳ありませんでした。ご丁寧なご回答有難うございました。

回答No.2

for文の文法は以下の通りです。 for( [初期設定式] ; [継続条件式] ; [再設定式] ) 最初に「初期設定式」の条件で開始し、 「継続条件式」の条件の間は処理を継続、 for文の最後に「再設定式」の処理を行う(その後、再び継続条件式の判断を行う) という流れです。 それぞれの式を区切る為に「;」を使用します。 これは、C言語の「仕様」です。 それぞれの式は省略することもできる為、以下のような記述を行うこともできます。 -------------- 例1)  for( i = 0; i < 10; i++ )  {   ……  } 例2)  i = 0;  for( ; i < 10; i++ )  {   ……  } 例3)  for( i = 0; i < 10; )  {   ……   i++;  } 例4)  i = 0;  for( ; i < 10; )  {   ……   i++;  } -------------- 上記は全て同じ動作となります。 尚、for文は「,」も使用することができます。 この場合は、「初期設定式」「再設定式」を複数記述する場合に使用します。 -------------- 例a)  for( i = 0, j = 1; i < 10; i++, j+=2 )  {   ……  } --------------

回答No.1

「,」 ではなく 「;」 のことでは? なぜと言われてもそういう文法で作ってあるのでとしか言いようがありませんね。 ちなみに「,」はカンマ演算子という演算記号の一つですね。forの中に書くこともありますが、forの中にある必要はありません。

gayaldy21
質問者

お礼

返事が遅れ申し訳ありませんでした。ご丁寧なご回答有難うございました。

関連するQ&A