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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-13 10:34:021078ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。