if 文

if 文は、複数の制御フローが可能な選択ステートメントです。

C++if 文 を使用すると、指定されたテスト式 (暗黙的に bool に変換される) が true に評価されたときに、ステートメントを条件付きで処理することができます。 bool への暗黙的な変換が失敗した場合は、プログラムが不適格です。

C C では、if 文を使用すると、 指定されたテスト式の評価が非ゼロ値になった場合に、ステートメントを条件付きで処理することができます。 テスト式は、算術型またはポインター型でなければなりません。

オプションで、if 文で else 節を指定することができます。 テスト式の評価が false (または C では、ゼロ値) になり、else 節がある場合、else 節に関連付けられているステートメントが実行されます。テスト式の評価が true になった場合、その式に続くステートメントが実行され、else 節は無視されます。

if 文の形式は、次のとおりです。

>>-if--(--expression--)--statement--+-----------------+--------><
                                    '-else--statement-'
 
 

if 文がネストされていて、else 節が存在する場合、指定された else は、同じブロック内の直前の if 文に関連付けられます。

任意の選択ステートメント (ifswitch) に続く単一のステートメントは、 オリジナルのステートメントを含んでいる複合ステートメントとして扱われます。 結果として、そのステートメントで宣言されたすべての変数は、if 文の後、 スコープの外にあります。 次に例を示します。

if (x)
int i;

は、以下と同等です。

if (x)
{  int i; }

変数 i は、if 文内でのみ可視です。 同じ規則が if 文の else 部分にも適用されます。

if 文の例

以下の例では、score の値が 90 以上であ る場合に、gradeA という値を受け取るようにします。

if (score >= 90)
   grade = 'A';

以下の例では、number の値が 0 またはそれ以上である場合 に Number is positive と表示します。 number の値が 0 より小さい場合には、 Number is negative と表示します。

if (number >= 0)
   printf("Number is positive¥n");
else
   printf("Number is negative¥n");

以下の例は、ネストされた if 文を示しています。

if (paygrade == 7)
   if (level >= 0 && level <= 8)
      salary *= 1.05;
   else
      salary *= 1.04;
else
   salary *= 1.06;
cout << "salary is " << salary << endl;

以下の例は、else 節を持たない、ネストされた if 文を示しています。 else 節は、常に、最も近い if 文に関連付けられるため、 特定の else 節を強制的に正しい if 文に関連付けるには、 中括弧が必要なことがあります。 この例では、中括弧を省略すると、else 節は、 ネストされた if 文に関連付けられることになります。

if (kegs > 0) {
   if (furlongs > kegs)
      fpk = furlongs/kegs;
}
else
   fpk = 0;

以下の例は、else 節の中にネストされた if 文を示しています。 この例では、複数の条件がテストされます。 テストは、それらの条件が書かれている順序で行われます。 1 つのテストが非ゼロ値に評価されると、 ステートメントが実行され、if 文全体が終了します。

if (value > 0)
   ++increase;
else if (value == 0)
   ++break_even;
else
   ++decrease;

関連参照

IBM Copyright 2003