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

C# 到 IL 深度解析:第3章 選擇與循環 (7) - 比較操作符 (<=、>=) 與 != 的 IL 實現細節

     編輯:關於C語言

小於等於 (<=) 與 大於等於 (>=) 的複合邏輯

>= 在 IL 中先用 cgt 判斷第一個數是否大於第二個;若否(結果 0),再用 ceq 判斷是否相等。最終結果為 cgt 結果或 ceq 結果的邏輯或。

範例:j != 16 的編譯過程

// C# 代碼
class zzz {
    static bool i;
    static int j = 19;
    public static void Main() {
        i = j != 16;
        System.Console.WriteLine(i);
    }
}

IL 代碼:

.method public hidebysig static void vijay() il managed {
    .entrypoint
    ldsfld int32 zzz::j
    ldc.i4.s 16
    ceq              // 比較相等,結果 0 (false)
    ldc.i4.0
    ceq              // 與 0 比較,結果 1 (true)
    stsfld bool zzz::i
    ldsfld bool zzz::i
    call void [mscorlib]System.Console::WriteLine(bool)
    ret
}

輸出:True。

逐步邏輯驗證

  • j=19:ceq 得 0,再 ceq 與 0 比較得 1 → True。
  • 若 j=1:cgt 得 0,ceq 比較 0 與 0 得 1 → True(此處為 >= 邏輯演示)。
  • 若 j=16:cgt 得 0,ceq 比較 0 與 0 得 1 → True。

移除 ldc.i4.0 和第二個 ceq 可觀察中間結果,幫助理解雙重比較機制。

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