none
C# 关于混合++自增运算符的元算过程及结果判断 ,如:(a++) + (++a) * 2 + (++a)

    问题

  • 请问大家为何b的计算结果为27,关于这个混合运算该如何判断?谢谢

    int a = 5;
    int b = (a++) + (++a) * 2 + (++a);
    Console.WriteLine(b); //27


    Who Dares Wins

    2016年4月7日 10:29

答案

全部回复

  • ?????

    • 已建议为答案 [-] 2016年4月7日 11:49
    • 已标记为答案 周 靖添 2016年4月7日 12:01
    • 已编辑 [-] 2018年1月11日 13:17
    2016年4月7日 11:05
  • .method private hidebysig static void  Main(string[] args) cil managed
    {
      .entrypoint
      // 代码大小       44 (0x2c)
      .maxstack  3
      .locals init ([0] int32 a,
               [1] int32 b)
      IL_0000:  nop
      IL_0001:  ldc.i4.5
      IL_0002:  stloc.0
      IL_0003:  ldloc.0
      IL_0004:  dup
      IL_0005:  ldc.i4.1
      IL_0006:  add
      IL_0007:  stloc.0
      IL_0008:  ldloc.0
      IL_0009:  ldc.i4.1
      IL_000a:  add
      IL_000b:  dup
      IL_000c:  stloc.0
      IL_000d:  ldc.i4.2
      IL_000e:  mul
      IL_000f:  add
      IL_0010:  ldloc.0
      IL_0011:  ldc.i4.1
      IL_0012:  add
      IL_0013:  dup
      IL_0014:  stloc.0
      IL_0015:  add
      IL_0016:  stloc.1
      IL_0017:  ldloc.0
      IL_0018:  call       void [mscorlib]System.Console::WriteLine(int32)
      IL_001d:  nop
      IL_001e:  ldloc.1
      IL_001f:  call       void [mscorlib]System.Console::WriteLine(int32)
      IL_0024:  nop
      IL_0025:  call       valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey()
      IL_002a:  pop
      IL_002b:  ret
    } // end of method Program::Main

    Who Dares Wins

    2016年4月7日 11:54
  • 非常感谢

    Who Dares Wins

    2016年4月7日 12:02