continue ステートメント を使用すると、 進行中のループの反復を終了することができます。 プログラム制御は、continue ステートメントからループ本体の終わりに渡されます。
continue ステートメントの形式は、次のとおりです。
>>-continue--;-------------------------------------------------><
continue ステートメントは、do、for または while の ような反復ステートメントの本体の中にしか含めることができません。
continue ステートメントは、反復ステートメントのアクション部分 の処理を終了し、制御をステートメントのループ連結部分へ移します。 例えば、反復するステートメントが for ステートメントである場合、 制御は、ステートメントの条件部分の 3 番目の式に移動します。 次に、ステートメントの条件部分の 2 番目の式 (テスト) に移動します。
ネストされたステートメントの中では、continue ステートメントは、 直接に continue ステートメントを囲んでいる do、for、 または while ステートメントの現行の反復だけを終了します。
continue ステートメントの例
以下の例は、for ステートメントに おける continue ステートメントを示しています。continue ステートメントを使用すると、値が 1 以下 の配列 rates のエレメントに対する処理がスキップされます。
/** ** This example shows a continue statement in a for statement. **/ #include <stdio.h> #define SIZE 5 int main(void) { int i; static float rates[SIZE] = { 1.45, 0.05, 1.88, 2.00, 0.75 }; printf("Rates over 1.00¥n"); for (i = 0; i < SIZE; i++) { if (rates[i] <= 1.00) /* skip rates <= 1.00 */ continue; printf("rate = %.2f¥n", rates[i]); } return(0); }
プログラムは、以下の出力を作成します。
Rates over 1.00 rate = 1.45 rate = 1.88 rate = 2.00
以下の例は、ネストされたループに おける continue ステートメントを示しています。内部ループが配列 strings の中である数に 遭遇すると、そのループの反復は終了します。処理は、内部ループの 3 番目の 式から続けられます。内部ループは、'¥0' エスケープ・シーケンスを 検出した時点で終了します。
/** ** This program counts the characters in strings that are part ** of an array of pointers to characters. The count excludes ** the digits 0 through 9. **/ #include <stdio.h> #define SIZE 3 int main(void) { static char *strings[SIZE] = { "ab", "c5d", "e5" }; int i; int letter_count = 0; char *pointer; for (i = 0; i < SIZE; i++) /* for each string */ /* for each each character */ for (pointer = strings[i]; *pointer != '¥0'; ++pointer) { /* if a number */ if (*pointer >= '0' && *pointer <= '9') continue; letter_count++; } printf("letter count = %d¥n", letter_count); return(0); }
プログラムは、以下の出力を作成します。
letter count = 5
関連参照