C++ で複数の条件を持つ if ステートメントを実装する

Aditya Raj 2023年10月12日
  1. C++ で複数の条件を持つ if ステートメントを実装する
  2. C++ で && 論理演算子を使用して複数の条件を持つ if ステートメントを実装する
  3. || を使用して複数の条件で if ステートメントを実装する C++ の論理演算子
  4. &&|| を使用して、複数の条件で if ステートメントを実装する C++ の論理演算子
  5. まとめ
C++ で複数の条件を持つ if ステートメントを実装する

C++ 論理演算子 && または ||if ステートメントで使用して、複数の条件を同時にチェックできます。

この記事では、関連する例とともに、C++ で複数の条件を持つ if ステートメントを使用する方法について詳しく説明します。

C++ で複数の条件を持つ if ステートメントを実装する

C++ では、2つの方法で複数の if ステートメントを使用できます。 異なる条件をチェックするために、ネストされた if ステートメントと複数の if ステートメントを 1つのプログラムに含めることができます。

2つのケースについて詳しく説明しましょう。

ネストされた if ステートメントを使用して複数の条件をチェックする必要がある場合があります。 たとえば、数値が 45 から 60 の間であるかどうかを確認したいとします。

ネストされた if ステートメントを使用して特定の条件をチェックするコードを以下に示します。

// C++ program demonstrating nested if-statement

#include <iostream>
using namespace std;

int main() {
  cout << "Enter a number: ";
  int num;
  cin >> num;

  if (num > 45) {
    if (num < 60) {
      cout << "Entered number is between 45 and 60";
    }

    else {
      "Entered number is not in between 45 and 60";
    }
  }

  else
    cout << "Entered number is not in between 45 and 60";

  return 0;
}

ここでは、ネストされた if ステートメントの形式で、すべての条件に対して 1つの if ステートメントを使用しました。 ネストされた if ステートメントでは、より長いコードを記述する必要があります。

代わりに、単一の if ステートメントで複数の論理 && 演算子を使用して、コードを単純化し、不要なコード行を書かないようにすることができます。

C++ で && 論理演算子を使用して複数の条件を持つ if ステートメントを実装する

if ステートメントを論理 && 演算子と共に使用して、C++ で複数の条件をチェックする方法について説明しましょう。

論理演算子 && は二項演算子です。 ブール値を評価する 2つのブール値または式をオペランドとして取ります。

実行後、if ステートメントのすべてのオペランドが true の場合、この演算子は true を返します。 それ以外の場合は false を返します。

たとえば、次のコードでは、(num_1 < num_2)(num_2 > num_3) の両方の条件が true と評価された場合、&& 演算子は true を返し、if ブロック内のステートメントが実行されます。 . いずれかのオペランドが false の場合、式全体が false として評価され、if ブロック内のコードは実行されません。

int num_1 = 5;
int num_2 = 12;
int num_3 = 10;

if( (num_1 < num_2) && (num_2 > num_3) //if condition1 "and" condition2 is true
   {
  statement_1;  // then execute the statements
  statement_2;
  ..............statement_n;
    }

if ステートメントで論理演算子 && を使用して、数値が 45 から 60 の間であるかどうかをチェックする次の例を考えてみましょう。

// C++ program demonstrating the use of Logical "and" (&&) operator

#include <iostream>
using namespace std;

int main() {
  cout << "Enter a number: ";
  int num;
  cin >> num;

  if (num > 45 && num < 60)
    cout << "Entered number is between 45 and 60";
  else
    cout << "Entered number is not in between 45 and 60";

  return 0;
}

上記の例では、論理演算子 && は、指定された数値が 45 より大きいか 60 より小さいかをチェックします。両方のオペランドが true の場合、if 条件の下のステートメントが実行され、出力は次のようになります。

Entered number is between 45 and 60

オペランド結果のいずれかが false の場合、else セクションの下のステートメントが実行され、出力は次のようになります。

Entered number is not in between 45 and 60

論理 && 演算子では、偽である可能性が高い条件が最初のオペランドとして優先されます。 オペランドのいずれかが偽の場合、式の他のオペランドはチェックされないため、プログラムの計算時間が短縮されます。

そのため、失敗の可能性が高いオペランドは、計算時間を短縮するために、if 条件で最初に宣言する必要があります。

上記の例では、if ステートメントのすべての式が真かどうかを確認する必要がありました。 ただし、条件の 1つが真であるかどうかを確認するだけでよい場合もあります。

たとえば、サイコロを振って 2 または 5 が出れば試合に勝つサイコロの例を考えてみましょう。

#include <iostream>
using namespace std;

int main() {
  cout << "Enter number on the dice: ";
  int num_1;
  cin >> num_1;

  if (num_1 == 2) {
    cout << "Game is Won";
    return 0;
  }

  if (num_1 == 5) {
    cout << "Game is Won";
    return 0;
  }

  else
    cout << "Game is Lost";

  return 0;
}

ここで、条件 (num_1 == 2)(num_1 == 5) のどちらかが真であっても、Game is Win です。 そのような場合、論理 || を使用できます。 C++ の複数の if ステートメントの代わりに演算子を使用します。

|| を使用して複数の条件で if ステートメントを実装する C++ の論理演算子

|| を使って議論しましょう 複数の if ステートメントの代わりに演算子を使用します。

論理 || 演算子 (||) もバイナリです。 ブール値を評価する 2つのブール値または式をオペランドとして取ります。

実行後、if ステートメントのいずれかのオペランドが true の場合、この演算子は true を返します。 それ以外の場合は false を返します。

|| の構文について説明しましょう。 例の助けを借りて if ステートメントの演算子:

int num_1;
int num_2;
int num_3;

if ((num_1 == 0) || (num_2 == 0) || (num_3) == 0)  // if any condition is true
{
  statement_1;  // then execute the statements
  statement_2;
  ..............statement_n;
}

ここで、式全体 (num_1 == 0) || (num_2 == 0) || (num_3)==0) は、(num_1 == 0)(num_2 == 0)、および (num_3 == 0) のいずれかの条件が true と評価される場合に true と評価されます。 if ブロック内のステートメントが評価されます。

すべての式が false と評価された場合、式全体が false と評価されるだけです。 if ステートメント内のステートメントは実行されません。

論理 || を使用して説明する次の例を検討してください。 C++ の複数の if ステートメントの代わりに演算子を使用します。

// C++ program demonstrating the use of Logical "or" (||) operator

#include <iostream>
using namespace std;

int main() {
  cout << "Enter number on the dice: ";
  int num_1;
  cin >> num_1;

  if (num_1 == 2 || num_1 == 5)
    cout << "Game is Won";
  else
    cout << "Game is Lost";

  return 0;
}

この例では、|| 演算子は、指定された数値が 2 か 5 かをチェックします。いずれかのオペランドが true の場合、if 条件の下のステートメントが実行され、Game is win になります。

すべてのオペランドが false と評価された場合、else セクションの下のステートメントが実行され、Game is lost になります。

真である可能性が最も高い条件は、最初のオペランドで指定する必要があります。 オペランドの結果のいずれかが true の場合、if 条件が true になり、残りの条件はチェックされません。

このようにして、プログラムの計算時間を短縮することができます。

どちらの論理演算子も左結合です。 したがって、それらは左から右の順序で実行されます。 ただし、最初のオペランドが false の場合、&& の 2 番目のオペランドは評価されません。

|| では、最初のオペランドが true の場合、2 番目のオペランドは評価されません。

&&|| を使用して、複数の条件で if ステートメントを実装する C++ の論理演算子

&&|| も使用できます。 単一の if ステートメントで、C++ で複数の条件をチェックします。 1つの if ステートメントで両方の演算子を使用して複数の条件をチェックする場合、評価は正しい順序で行う必要があります。

優先順位が最も高い演算子は、式の最初のオペランドとグループ化されます。 次に、次に高い演算子がオペランドとグループ化されます。

次の表に、論理演算子の優先順位を示します。

論理演算子 優先順位
いいえ (! 高い
と (&& 中くらい
または (`

表から、次のことがわかります。

  • 論理 ! operator は式の中で最も優先順位が高く、最初に評価されます。
  • 論理演算子 && は、式の中で中程度の優先度を持ち、! の後に評価されます。 オペレーター。
  • 論理 || 演算子は式の中で最も優先順位が低く、&& 演算子の後に評価されます。

理解を深めるために、次のコードを検討してください。

if (num > 45 || num < 60 && num != 100) {
  cout << num;
}

num = 50 を考えてみましょう。上記のコードの結果は次の理由で true になります。

  1. 数 < 60 && 数 ! && の方が優先度が高いため、= 100 が評価されます。 この評価は真になります。
  2. ( num > 45 || TRUE ) が評価され、最終的に結果として true が得られます。

まとめ

この記事では、C++ で複数の条件を持つ if ステートメントの使用について説明しました。 if ステートメントの論理演算子の構文、それらの真理値表、結合性、および優先順位について、いくつかの例とともに詳しく学びました。

著者: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

関連記事 - C++ Operator