这要放在c板块,还不笑死人啊 !谁要解下这个啊?我记得是C语言书上的例题!
int i=3;
i=++i+++i+++i+++i+++i;
ConSole.WriteLine(i);
i=(i++)+(i++)+(i++)+(i++);
ConSole.WriteLine(i);只为引玉,大家不要抛砖!
顺便散分
int i=3;
i=++i+++i+++i+++i+++i;
ConSole.WriteLine(i);
i=(i++)+(i++)+(i++)+(i++);
ConSole.WriteLine(i);只为引玉,大家不要抛砖!
顺便散分
i = ++i + ++i + ++i+ ++i + ++i;
Console.WriteLine(i);
i = (i++) + (i++) + (i++) + (i++);
Console.WriteLine(i);
按F11调试一下就知道了
i = ++i + ++i + ++i+ ++i + ++i; //4,5,6,7,8
Console.WriteLine(i);//30
i = (i++) + (i++) + (i++) + (i++); //30,31,32,33
Console.WriteLine(i);
---++i,先加1后使用
i = ++i + ++i + ++i+ ++i + ++i;
-------4,5,6,7,8和为30---i++,先使用后加1
-------30,31,32,33 和为126
参考一下吧,这里也有高手说得清楚了
++i:i自己先+1,然后参与运算
guoluren_kang
我发现,我今天回的好几个帖子你都跑到我前面了......
i = (++i) + (++i) + (++i)+ (++i) + (++i); //不带括号C#竟然不行!
Console.WriteLine(i);
i = (i++) + (i++) + (i++) + (i++);
Console.WriteLine(i);输出
21
90
你是对的。前2个月,同学补考C,问了我这个问题,
我还特意看了书,隐约记得
对于
i=3;
i = ++i+++i+++i+++i+++i;
先自增,后统一赋值,i==35;
i=3;
i = (i++) + (i++) + (i++) + (i++);
先统一赋值,后逐步自增i==30;难道是编译器的问题,解释这语句不一样?
有点汗!~
我的机子上没TC.这下脸丢大了。
{
int i = 3; i = ++i + ++i + ++i + ++i;//i = (++i) + (++i) + (++i) + (++i);
Console.WriteLine(i);
}.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// 代码大小 35 (0x23)
.maxstack 3
.locals init ([0] int32 i)
IL_0000: nop
IL_0001: ldc.i4.3
IL_0002: stloc.0 IL_0003: ldloc.0
IL_0004: ldc.i4.1
IL_0005: add IL_0006: dup
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: add IL_000e: ldloc.0
IL_000f: ldc.i4.1
IL_0010: add IL_0011: dup
IL_0012: stloc.0
IL_0013: add IL_0014: ldloc.0
IL_0015: ldc.i4.1
IL_0016: add IL_0017: dup
IL_0018: stloc.0
IL_0019: add IL_001a: stloc.0
IL_001b: ldloc.0
IL_001c: call void [mscorlib]System.Console::WriteLine(int32)
IL_0021: nop
IL_0022: ret
} // end of method Program::Main
可以看到都是步骤:
i+1=4 然后i+1=5,计算和4+5=9
然后i+1=6 计算和9+6=15
然后I+1=7 计算和15+7=22
{
int i = 3;
i =++i + ++i+ ++i + ++i + ++i;
Console.WriteLine(i);
}.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// 代码大小 39 (0x27)
.maxstack 3
.locals init ([0] int32 i)
IL_0000: ldc.i4.3
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: ldc.i4.1
IL_0004: add
IL_0005: dup
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: ldc.i4.1
IL_0009: add
IL_000a: dup
IL_000b: stloc.0
IL_000c: add
IL_000d: ldloc.0
IL_000e: ldc.i4.1
IL_000f: add
IL_0010: dup
IL_0011: stloc.0
IL_0012: add
IL_0013: ldloc.0
IL_0014: ldc.i4.1
IL_0015: add
IL_0016: dup
IL_0017: stloc.0
IL_0018: add
IL_0019: ldloc.0
IL_001a: ldc.i4.1
IL_001b: add
IL_001c: dup
IL_001d: stloc.0
IL_001e: add
IL_001f: stloc.0
IL_0020: ldloc.0
IL_0021: call void [mscorlib]System.Console::WriteLine(int32)
IL_0026: ret
} // end of method Program::Main
{
int i = 3;
i =++i;
Console.WriteLine(i);
}.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// 代码大小 15 (0xf)
.maxstack 2
.locals init ([0] int32 i)
IL_0000: ldc.i4.3
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: ldc.i4.1
IL_0004: add
IL_0005: dup
IL_0006: stloc.0
IL_0007: stloc.0
IL_0008: ldloc.0
IL_0009: call void [mscorlib]System.Console::WriteLine(int32)
IL_000e: ret
} // end of method Program::Main