break;
// 讀取使用者輸入的分數,範圍在0到100之間 // 將分數儲存在陣列中 // 返回值:所儲存值的個數 //--------------------------------------------------------------- int getScores( short scores[ ], int len ) { int i = 0; puts( "Please enter scores between 0 and 100.n" "Press <Q> and <Return> to quit.n" ); while ( i < len ) { printf( "Score No. %2d: ", i+1 ); if ( scanf( "%hd", &scores[i] ) != 1 ) break; // 未讀到資料:結束回圈 if ( scores[i] < 0 || scores[i] > 100 ) { printf( "%d: Value out of range.n", scores[i] ); break; // 拋棄這個值,並結束回圈 } ++i; } return i; // 已儲存的資料個數 }
continue;
// 讀取分數 // -------------------------- int getScores( short scores[ ], int len ) { /* ... (同例6-7) ... */ while ( i < len ) { /* ... (同例6-7) ... */ if ( scores[i] < 0 || scores[i] > 100 ) { printf( "%d : Value out of range.n", scores[i] ); continue; // 拋棄這個值,並讀取另一個值 } ++i; // 已儲存的資料個數加1 } return i; // 已儲存的資料個數 }
goto 標籤名稱;
標籤名稱: 語句
// 在函數內部處理錯誤 // ---------------------------------- #include <stdbool.h> // 定義布林值,true和false(C99) #define MAX_ARR_LENGTH 1000 bool calculate( double arr[ ], int len, double* result ) { bool error = false; if ( len < 1 || len > MAX_ARR_LENGTH ) goto error_exit; for ( int i = 0; i < len; ++i ) { /* ... 一些計算操作,其可能造成錯誤標誌error被設定... */ if ( error ) goto error_exit; /* ... 繼續計算;結果被儲存到變數 *result 中... */ } return true; // 如果沒有錯誤,程式會執行到此處 error_exit: // 錯誤處理子程式 *result = 0.0; return false; }
static const int maxSize = 1000; double func( int n ) { double x = 0.0; if ( n > 0 && n < maxSize ) { double arr[n]; // 一個變長度陣列 again: /* ... */ if ( x == 0.0 ) goto again; // 合法:在arr的作用域內跳轉 } if ( x < 0.0 ) goto again; // 非法: 從arr的作用域外跳轉到作用域內 return x; }
return [表示式];
// 返回兩個整數型別引數中的較小值 int min( int a, int b ) { if ( a < b ) return a; else return b; }
return ( a < b ? a : b );