ホームページ > バックエンド開発 > C++ > C switch ステートメントで範囲ベースのケースを実装するにはどうすればよいですか?

C switch ステートメントで範囲ベースのケースを実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-13 10:34:02
オリジナル
1088 人が閲覧しました

How to Implement Range-Based Cases in a C   Switch Statement?

Switch ステートメントでの値の範囲の選択

この例では、switch の無効な構文が原因でコンパイラでエラーが発生しています。声明。このコードは、「case >= value」および「case == value」という構文を使用して値の範囲を指定しようとしますが、これは C では標準ではありません。

この問題を解決するには、次の点に注意することが重要です。コンパイラは、C 言語の拡張機能として case 範囲をサポートします。値の範囲を指定する構文は、「case value ... value」です。

Case 範囲を含む改訂コード:

#include <iostream>
using namespace std;

int main() {
  int score;

  // Get score from user
  cout << "Score: ";
  cin >> score;

  // Switch statement with case ranges
  switch (score) {
    case 0:
      cout << "a";
      break;
    case 0 ... 9:
      cout << "b";
      break;
    case 11 ... 24:
      cout << "c";
      break;
    case 25 ... 49:
      cout << "d";
      break;
    case 50 ... 100:
      cout << "e";
      break;
    default:
      cout << "BAD VALUE";
      break;
  }

  cout << endl;
  return 0;
}
ログイン後にコピー

コンパイラ サポートCase 範囲の場合:

Case 範囲はすべてのコンパイラでサポートされているわけではありません。この機能をサポートする既知のコンパイラーは次のとおりです。

  • GCC 4.9 以降
  • Clang 3.5.1 以降
  • Intel C/C Compiler 13.0.1

コンパイラが case 範囲をサポートしていない場合は、switch ステートメントで値の範囲を選択するために別のアプローチを使用する必要があります。 1 つのオプションは、次のようにネストされた一連の if-else ステートメントを使用することです:

if (score >= 100) {
  cout << "a";
} else if (score >= 50) {
  cout << "b";
} else if (score >= 25) {
  cout << "c";
} else if (score >= 10) {
  cout << "d";
} else if (score > 0) {
  cout << "e";
} else if (score == 0) {
  cout << "f";
} else {
  cout << "BAD VALUE";
}
ログイン後にコピー

以上がC switch ステートメントで範囲ベースのケースを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート