> → cgt:檢查堆疊首值是否大於次值,結果 1/0。< → clt:檢查首值是否小於次值。== → ceq:檢查相等性,結果 1/0。// 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,此處原文可能有誤,邏輯以指令為準)。
== 用於字串時,編譯器轉為呼叫 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),高階語言的比較操作符直接映射至這些指令,字串比較則透過框架方法實現。