名稱空間
變體
操作

if 語句

來自 cppreference.com
< c‎ | language

有條件地執行程式碼。

用於僅在某些條件為真時才需要執行程式碼的情況。

目錄

[編輯] 語法

屬性說明序列(可選) if ( 表示式 ) 真語句 (1)
屬性說明序列(可選) if ( 表示式 ) 真語句 else 假語句 (2)
屬性說明序列 - (C23)可選的屬性列表,應用於 if 語句
表示式 - 任何標量型別的表示式
真語句 - 任何語句(通常是複合語句),在表示式比較不等於 0 時執行
假語句 - 任何語句(通常是複合語句),在表示式比較等於 0 時執行

[編輯] 解釋

表示式必須是任何標量型別的表示式。

如果表示式的比較結果不等於整數零,則執行真語句

在形式 (2) 中,如果表示式的比較結果等於整數零,則執行假語句

與所有其他選擇和迭代語句一樣,整個 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 相關聯(換句話說,如果真語句也是一個 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);

如果透過 goto 進入真語句,則不執行假語句

[編輯] 關鍵詞

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 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++ 文件中關於if 語句的內容