名前空間
変種
操作

if文

From cppreference.com
< c‎ | language

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

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

目次

[編集] 構文

属性指定子シーケンス(任意) if ( ) 文-true (1)
属性指定子シーケンス(任意) if ( ) 文-true else 文-false (2)
attr-spec-seq - (C23)if文に適用される、属性の任意のリスト
- 任意のスカラー型の
文-true - 0と等しくないと比較された場合に実行される、任意の(多くの場合、複合文)
文-false - 0と等しいと比較された場合に実行される、任意の(多くの場合、複合文)

[編集] 解説

は、任意のスカラー型の式でなければなりません。

が整数のゼロと等しくないと比較された場合、文-trueが実行されます。

形式(2)では、が整数のゼロと等しいと比較された場合、文_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と関連付けられます(言い換えると、文-trueがif文でもある場合、その内側のif文もelse部を含まなければなりません)。

int j = 1;
if (i > 1)
   if(j > 2)
       printf("%d > 1 and %d > 2\n", i, j);
    else // this else is part of if(j>2), not part of if(i>1) 
       printf("%d > 1 and %d <= 2\n", i, j);

文-truegotoによって入る場合、文-falseは実行されません。

[編集] キーワード

if, else

[編集]

#include <stdio.h>
 
int main(void)
{
    int i = 2;
    if (i > 2) {
        printf("first is true\n");
    } else {
        printf("first 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");
}

出力

first is false
i == 3
i != 3 is false

[編集] 参照

  • C17標準 (ISO/IEC 9899:2018)
  • 6.8.4.1 The if statement (p: 108-109)
  • C11標準 (ISO/IEC 9899:2011)
  • 6.8.4.1 The if statement (p: 148-149)
  • C99標準 (ISO/IEC 9899:1999)
  • 6.8.4.1 The if statement (p: 133-134)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 3.6.4.1 The if statement

[編集] 関連項目

English 日本語 中文(简体) 中文(繁體)