int count = 0;
for (int i = 0; i < 4; i++)
{
count = count += count++;
Console.Writeline(count);
}为什么结果永远是零?
for (int i = 0; i < 4; i++)
{
count = count += count++;
Console.Writeline(count);
}为什么结果永远是零?
调试欢乐多
如果你把count++ 改成++count 就不一样了
int count = 0;
for (int i = 0; i < 9; i++)
{
count++;
Console.WriteLine(count);
}
会自增。
int count = 0;
for (int i = 0; i < 9; i++)
{
count = count++;
Console.WriteLine(count);
}
这样又变成零了,没自增
这条语句可以看成count=count=count+count++;循环第一次count为0,所以count+count++就为0,所以第二个count就为0,第一个count因此也为0。剩下的循环也是这样的情况
楼主
运算的这样
先把式子分解
变成 count=count+(count++); 不难理解吧
然后 因为++是后面才加上的 实际上count已经赋值了 所以继续分解
变成 count=count+count;
现在你可以理解为什么是0了吧
按C语言从右至左的计算原则上式可转化为:
count = count + count++;count 初值是0
count++ 计算在count = count + count++计算之后所以始终是零
for (int i = 0; i < 9; i++)
{
count = count++;
Console.WriteLine(count);
}
count++这个东东,是先使用count的最初值0,然后count自增。
可以对比++count来理解,++count是先自增将count的值变为1,再赋值。
前面的是没有运算符的,所以每次循环 count的值都在变化,而 下面的就不一样了,他是count=count++,这样以来的话它的值就没有变化了,是先将本身的 值赋值给 count这个变量了,而本身的值是0,所以打印 count的结果当然就是 0 了。