Namespaces
Variants

if statement

From cppreference.net

条件付きでコードを実行します。

条件が真の場合にのみコードを実行する必要がある場合に使用されます。

目次

構文

attr-spec-seq  (オプション) if ( expression ) statement-true (1)
attr-spec-seq  (オプション) if ( expression ) statement-true else statement-false (2)
attr-spec-seq - (C23) 任意の 属性 のリスト(オプション)。 if 文に適用される
expression - 任意のスカラー型の
statement-true - 任意の (多くの場合複合文)。 expression 0 と等しくない場合に実行される
statement-false - 任意の (多くの場合複合文)。 expression 0 と等しい場合に実行される

説明

expression は任意の scalar type の式でなければなりません。

expression が整数ゼロと等しくない場合、 statement-true が実行されます。

形式 (2) において、 expression が整数ゼロと等しいと比較された場合、 statement-false が実行されます。

他のすべての選択文および反復文と同様に、if文全体が独自のブロックスコープを持ちます:

enum {a, b};
int different(void)
{
    if (sizeof(enum {b, a}) != sizeof(int))
        return a; // a == 1
    return b; // b == 0 in C89, b == 1 in C99
}
(C99以降)

注記

else は常に最も近い前方の if と関連付けられます(言い換えれば、 statement-true if 文である場合、その内側の if 文も同様に else 部分を含む必要があります):

int j = 1;
if (i > 1)
    if(j > 2)
        printf("%d > 1 and %d > 2\n", i, j);
    else // このelseはif (j > 2)に属し、if (i > 1)には属しません
        printf("%d > 1 and %d <= 2\n", i, j);

statement-true goto を通じて入力された場合、 statement-false は実行されません。

キーワード

if , else

#include <stdio.h>
int main(void)
{
    int i = 2;
    if (i > 2)
    {
        printf("i > 2 is true\n");
    }
    else
    {
        printf("i > 2 is false\n");
    }
    i = 3;
    if (i == 3)
        printf("i == 3\n");
    if (i != 3)
        printf("i != 3 is true\n");
    else
        printf("i != 3 is false\n");
}

出力:

i > 2 is false
i == 3
i != 3 is false

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 6.8.5.2 if文 (p: 154)
  • C17規格 (ISO/IEC 9899:2018):
  • 6.8.4.1 if文 (p: 108-109)
  • C11規格 (ISO/IEC 9899:2011):
  • 6.8.4.1 if文 (p: 148-149)
  • C99規格 (ISO/IEC 9899:1999):
  • 6.8.4.1 if文 (p: 133-134)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 3.6.4.1 if文

関連項目

C++ ドキュメント for if ステートメント
翻訳内容: - "C++ documentation" → "C++ ドキュメント" - "if statement" → "if ステートメント"("if"はC++キーワードのため保持、"statement"のみ翻訳) HTMLタグ、属性、 タグ内の"if"キーワードはそのまま保持し、必要なテキスト部分のみ日本語に翻訳しました。