首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言入門講座:分支結構與條件判斷完全指南

     編輯:關於C語言

關係運算子與表達式

程式常需比較兩值大小以決定流程。C 提供六種關係運算子:<、<=、>、>=、==、!=。皆為雙目、左結合。優先級:算術 > 關係 > 賦值。< <= > >= 優先於 == !=。

關係表達式值為 1(真)或 0(假)。字元參與運算用 ASCII 碼。多重關係表達式如 k==j==i+5,左結合先算 k==j 得 0,再算 0==i+5 得 0。

邏輯運算子與表達式

三種邏輯運算子:&&(與)、||(或)、!(非)。&& || 雙目左結合,! 單目右結合。優先級:! > 關係 > && > || > 賦值。

求值規則:

  • &&:雙真才真。
  • ||:一真即真。
  • !:真變假、假變真。

判斷真假時:0 為假,非 0 為真。故 5 && 3 為真(1),5 || 0 為真(1)。

if 語句三種形式

1. 基本型

if (表達式) 語句;
// 表達式真則執行語句

例:輸入兩數較大者。max=a; if(max<b) max=b;

2. if-else 型

if (表達式) 語句1; else 語句2;
// 真執行1,假執行2

例:同前,改用 if-else 輸出較大值。

3. if-else-if 多重分支

if (expr1) stmt1;
else if (expr2) stmt2;
else if (expr3) stmt3;
...
else stmtN;
// 依序判斷,首真執行對應語句,隨後跳出整個結構

例:判斷輸入字元類別(控制字元、數字、大寫、小寫、其他),依 ASCII 碼區間判斷。

4. if 使用注意點

  • 條件表達式可為任何型別,非 0 即真。if(a=5) 恆真;if(a=b) 賦值後以結果判斷,常見用法。
  • 條件必須用括號括起,語句以分號結尾。
  • 需執行多句時,用 {} 包成複合語句,} 後不加分號。

if 巢狀與 else 配對規則

巢狀 if 易產生 else 歧義:


if (expr1)
    if (expr2) stmt1;
    else stmt2; // else 配對給誰?

C 規定:else 永遠與最近的未配對 if 配對。以上例 else 屬於內層 if。若要讓外層 if 配對,需用大括號明確界定。

建議:多分支優先用 if-else-if 扁平化,減少巢狀,提升可讀性。

條件運算子 ? : 與條件表達式

三目運算子,形式:expr1 ? expr2 : expr3。expr1 真取 expr2,否取 expr3。常用於簡化單賦值分支:

max = (a>b) ? a : b;  // 等價於 if-else 版

注意:

  • 優先級低於關係/算術,高於賦值,故 max=a>b?a:b 合法。
  • ? 與 : 成對出現。
  • 右結合:a>b?a:c>d?c:d 解析為 a>b?a:(c>d?c:d)(巢狀條件表達式)。

switch 多重選擇


switch (表達式) {
    case 常量1: 語句1; break;
    case 常量2: 語句2; break;
    ...
    default: 語句N;
}

特點:case 只是標籤,匹配後**不自動跳出**,會貫穿執行後續所有 case(含 default),故**必須用 break 跳出**。

例:輸入 1~7 輸出星期幾,若無 break 輸入 3 會印 Wednesday 到 Sunday。加上 break 修正。

switch 使用細節

  • case 常量值不可重複。
  • case 後可跟多句,無需大括號。
  • case/default 順序可任意調換不影響結果。
  • default 可省略。

綜合範例

輸入三整數,輸出最大/最小值

先比較 a,b 存入 max,min,再與 c 比較更新。

簡易計算機

輸入 a 運算子 b,switch(運算子) 執行四則運算,預設報錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved