テクノロジー愛好家の方、こんにちは!スイッチのサプライヤーとして、私はスイッチ、つまり私たちが供給する物理的なスイッチだけでなく、それにちなんで名付けられたプログラミング構造についても、非常に興味深い質問をよく受けます。最近浮かんだ質問の 1 つは、「C++ では switch ステートメントに同じ値を持つ複数のケースを含めることができますか?」というものです。さっそく見ていきましょう。
C++ の Switch ステートメントの基本
まず最初に、C++ の switch ステートメントとは何なのかを簡単に説明します。 switch ステートメントは、プログラムが式を評価し、その式の値に基づいていくつかの可能なステートメントの 1 つを実行できるようにする C++ の制御フロー ステートメントです。これは、長いチェーンに代わるよりクリーンな代替手段です。if-else単一の変数を複数の定数値と比較する場合のステートメント。
C++ での switch ステートメントの簡単な例を次に示します。


#include <iostream> int main() { int day = 3; switch (day) { case 1: std::cout << "月曜日";壊す;ケース 2: std::cout << "火曜日";壊す;ケース 3: std::cout << "水曜日";壊す;デフォルト: std::cout << "無効な日"; 0を返します。 }
この例では、スイッチステートメントは変数を評価します日。もし日が 1 の場合、「月曜日」が出力されます。 2 の場合は、「火曜日」などが出力されます。のデフォルトいずれの場合もケースが実行されます。場合値が式と一致します。
同じ値を持つ複数のケースを存在させることはできますか?
さて、大きな質問です。C++ では、switch ステートメントに同じ値を持つ複数のケースを含めることができますか?簡単に言うと「ノー」です。 C++ では複数は許可されません場合単一の中で同じ定数値を持つラベルスイッチ声明。次のようなことをしようとすると:
#include <iostream> int main() { int num = 2; switch (num) { case 1: std::cout << "1";壊す;ケース 2: std::cout << "2";壊す; case 2: // これによりコンパイル エラーが発生します std::cout << "Another Two";壊す;デフォルト: std::cout << "その他"; 0を返します。 }
コンパイルエラーが発生します。コンパイラは、重複する case 値についてエラーを出します。この制限の背後にある理由は、曖昧さを避けるためです。同じ値を持つケースが複数ある場合、コンパイラーは、式がその値と一致したときにどれを実行するかを認識できません。
回避策
しかし、実際に複数の値に対して同じコードを実行する必要がある場合はどうすればよいでしょうか?まあ、複数をグループ化することもできます場合ラベルも一緒に。その方法は次のとおりです。
#include <iostream> int main() { int num = 2; switch (num) { case 1: std::cout << "1";壊す;ケース 2: ケース 3: std::cout << "2 または 3";壊す;デフォルト: std::cout << "その他"; 0を返します。 }
この例では、で2 または 3 のいずれかで、グループ化されたコードの下にあります。場合ラベルが実行されます。これは、同じアクションをトリガーする複数の値を処理するための完全に有効で便利な方法です。
現実世界のプログラミングにおいてこれが重要な理由
のルールを理解するスイッチステートメントは、クリーンでバグのないコードを作成するために非常に重要です。大規模なプロジェクトでは、1 つのコンパイル エラーによって多くの時間が無駄になる可能性があります。重複することができないことを知っていることで、場合このよくある間違いを避けることができます。
また、グループ化する機能場合ラベルを使用すると、コードがより簡潔になり、読みやすくなります。異なる値に対して同じコードを複数回記述する代わりに、関連する値をグループ化できます。場合ラベルも一緒に。
当社のスイッチ製品
スイッチのサプライヤーとして、当社はさまざまな用途向けに高品質のスイッチを幅広く提供しています。当社の人気商品のひとつが、電子圧力スイッチ。このスイッチは、さまざまなシステムの圧力を正確に測定および制御するように設計されています。信頼性が高く、設置が簡単で、産業用および商業用アプリケーションに最適な高度な機能を備えています。
小規模な DIY プロジェクトに取り組んでいる場合でも、大規模な産業システムに取り組んでいる場合でも、当社のスイッチはお客様のニーズを満たすように構築されています。私たちは一流の製品と優れた顧客サービスを提供することに誇りを持っています。
スイッチのニーズについてはお問い合わせください
プログラミングまたは物理的なアプリケーションのいずれの場合でも、スイッチの市場に興味がある場合は、ぜひご意見をお待ちしています。当社の専門家チームは、お客様の特定の要件に適したスイッチを見つけるお手伝いをします。遠慮せずに連絡して、プロジェクトについて会話を始めてください。私たちは、最高のスイッチを最高の価格で確実に手に入れるためにここにいます。
参考文献
- ストルストラップ、ビャルネ。 「C++ プログラミング言語」。アディソン・ウェスリー・プロフェッショナル、2013 年。
- リップマン、スタンリー B.、ジョゼ・ラジョア、バーバラ E. ムー。 「C++入門」。アディソン・ウェスリー・プロフェッショナル、2012 年。
