C#中的计算常量

Mig*_*uel 6 c# jit cil operators

早上好,下午或晚上,

要么在MSIL或JIT编译器更换之类的东西1 << 51 << 31与代码322147483648分别,否则他们将等待执行的方法来评估这些常量"及时",因为它们涉及到其他的方法(经营者)?

非常感谢你.

Mon*_*ong 6

试试吧.

以下代码

    static void Main ( string[] args )
    {
        Console.WriteLine ( 1 << 4 );
    }
Run Code Online (Sandbox Code Playgroud)

获取编译为

  IL_0000:  nop
  IL_0001:  ldc.i4.s   16
  IL_0003:  call       void [mscorlib]System.Console::WriteLine(int32)
  IL_0008:  nop
  IL_0009:  ret
Run Code Online (Sandbox Code Playgroud)

它只加载常量16并将其传递给WriteLine.


Jon*_*nna 5

是.查看已编译的IL以查找刚刚执行的程序,Console.WriteLine(1 << 5)您将看到它与Console.WriteLine(32)or 的相同Console.WriteLine(0x20).这同样适用于许多其他此类常量.