代码如下:
static void Main(string[] args)
{
int i=0;
int c = 0; for(int j=0;j<5;j++){
i = i++;
Console.Write("第"+j+"次:i的值:"+ i +" c的值:"+c);
c = i++;
Console.Write("\n第" + j + "次:i的值:" + i + " c的值:" + c);
Console.Write("\r\n");
} Console.Write(i);
Console.Write("+"+c); Console.Read();
}
请问具体的运算过程是怎么样的?为什么输出结果是这样的:第0次:i的值:0c的值:0
第0次:i的值:1c的值:0
第1次:i的值:1c的值:0
第1次:i的值:2c的值:1
第2次:i的值:2c的值:1
第2次:i的值:3c的值:2
第3次:i的值:3c的值:2
第3次:i的值:4c的值:3
第4次:i的值:4c的值:3
第4次:i的值:5c的值:4
5+4
static void Main(string[] args)
{
int i=0;
int c = 0; for(int j=0;j<5;j++){
i = i++;
Console.Write("第"+j+"次:i的值:"+ i +" c的值:"+c);
c = i++;
Console.Write("\n第" + j + "次:i的值:" + i + " c的值:" + c);
Console.Write("\r\n");
} Console.Write(i);
Console.Write("+"+c); Console.Read();
}
请问具体的运算过程是怎么样的?为什么输出结果是这样的:第0次:i的值:0c的值:0
第0次:i的值:1c的值:0
第1次:i的值:1c的值:0
第1次:i的值:2c的值:1
第2次:i的值:2c的值:1
第2次:i的值:3c的值:2
第3次:i的值:3c的值:2
第3次:i的值:4c的值:3
第4次:i的值:4c的值:3
第4次:i的值:5c的值:4
5+4
int i = 0;
int c = 0;
i=i++; //把原来的值赋给了i,递增之后的值并没有赋值给i
c=i++; //i=0 所以c等于0
等价于
int i = 0;
int c = 0;
int d = 0;
d = i++; //d=i等于0
c = d++; //c等于0
i= j+1;
i=j;
而 i= (i++) + 100;等价于:var j=i;
i= j+1;
i= j+100;
而 i= (i++) + i;等价于:var j=i;
i= j+1;
i= j+i;
不过,知道写这种代码的人比较不靠谱就行了,平常注意小心不要写出这种难以跟别人取得共识的代码。平常不要为了炫耀代码而写代码,写代码应该尽量清晰简明。
2) i= j+1;
3) 然后使用j替代(i++)这个表达式来继续计算