>= 在 IL 中先用 cgt 判斷第一個數是否大於第二個;若否(結果 0),再用 ceq 判斷是否相等。最終結果為 cgt 結果或 ceq 結果的邏輯或。
// 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 可觀察中間結果,幫助理解雙重比較機制。