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

C# 到 IL 深度解析:第3章 選擇與循環 (6) - 關係操作符 (>, <, ==) 的 IL 指令對應

     編輯:關於C語言

關係操作符對應的 IL 指令

  • > → cgt:檢查堆疊首值是否大於次值,結果 1/0。
  • < → clt:檢查首值是否小於次值。
  • == → ceq:檢查相等性,結果 1/0。

範例:j > 16 與 j == 16

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

IL 片段:

ldsfld int32 zzz::j
ldc.i4.s 16
cgt
stsfld bool zzz::i

輸出 False(因 19 > 16 為真,但範例輸出顯示 False,實際應為 True,此處原文可能有誤,邏輯以指令為準)。

字串比較與 Equals

== 用於字串時,編譯器轉為呼叫 String.Equals 靜態方法,而非直接使用 ceq。

// C# 代碼
string a = "bye";
string b = "bye";
System.Console.WriteLine(a == b);

IL:

ldstr "bye"
ldstr "bye"
call bool [mscorlib]System.String::Equals(string, string)
call void [mscorlib]System.Console::WriteLine(bool)

輸出 True。

結論

IL 擁有完整的邏輯指令集(cgt、clt、ceq),高階語言的比較操作符直接映射至這些指令,字串比較則透過框架方法實現。

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