C 系
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:36 UTC 版)
awk, C, C++, C#, D, Java, JavaScript, Perlなどでは基本的な構文は以下のようになる。 for(初期化; ループの継続条件; カウンタ変数の更新) 文 文はどのような文でもよいが、次のような文がよく使われる。 for(…; …; …) 式; /* 単文 */ for(…; …; …){ 0個以上の文 /* 複文 */} for(…; …; …) for(…; …; …) /* 入れ子になったfor文 */ 式; このループは次のような手順で実行される。 初期化を実行する。 条件を評価する。条件が偽ならば、ループを終了する。 真文を実行する。 カウンタ変数の更新を実行する。 条件の評価に戻る。 条件がはじめから偽の場合は、真文は一度も実行されない。また、初期化・条件・カウンタ変数の更新の三つは、それぞれ省略することが出来る。条件を省略した場合、条件は常に真であるとみなされ、ループから強制的に抜け出る構文(break, return など)がなければ無限ループとなる。 例えば、初期化とカウンタ変数の更新を省略し、条件のみを記述する場合、次のようになる。 for (; x < 100;) …… 初期化などを省略した場合でも、丸括弧内で区切りとして使われる ; を省略することはできない。 C99、C++、C#、Java では初期化は式に限られず、ローカル変数を宣言できる。for文は暗黙のブロックを作る、つまり { for(…; …; …) ……} と等価とみなされるため、宣言された変数のスコープはfor文内(for(…; …; …)を含む)に限られる。さらにC99およびC++に関しては、外側のスコープで定義した変数と同じ名前の変数を内側のスコープで定義することができる。たとえば次のコードでは、それぞれの i は別のブロックにあるため、正常なコードとなる。 int i = 1;for(int i = 0; i < 10; i++) ……for(int i = 0; i < 10; i++) for(int i = 0; i < 10; i++) ……/* ここでの i は 1 */ ただしANSI C++規格が制定される前(AT&T C++ 2.0まで)のC++では暗黙のブロックはなかったため、このコードでは同じブロック内で i が複数回宣言されておりコンパイルエラーとなった。C#およびJavaでは、外側のスコープで定義した変数と同じ名前の変数を内側のスコープで定義することができないため、コンパイルエラーとなる。 初期化(式の場合)・ループの継続条件・カウンタ変数の更新は、それぞれ1つの式のみが許される。ただしコンマ演算子を使って、実質的に2つの演算を1つの式で表すことができる。初期化で宣言をする場合も、1つの宣言文のみが許される。したがって、同じ型の場合に限り複数変数を宣言できる。 for (int i = 0, j = 0; i < 10; i++, j++) ……
※この「C 系」の解説は、「for文」の解説の一部です。
「C 系」を含む「for文」の記事については、「for文」の概要を参照ください。
- >> 「c系」を含む用語の索引
- c系のページへのリンク