日期:2014-05-19  浏览次数:20869 次

提一个关于++的小问题。
我用C#作了一个程序。
int   i=10;
i=i+i++;
Console.WriteLine(i);
Console.ReadLine();
输出的结果是20.

我有用C做了一个
int   i   =   10;
i   =   i   +   i++;
printf( "i=%d\n ",i);
输出结果是21.

奇怪?#@!@!!     为什么?????     C的好理解,C#的为什么是20,后面的i++没有起作用?

------解决方案--------------------
i+i++
其实关键在于++的时机
C#是在运算完i+i的时候
而C++是在运算完i=i+i的时候
这就不难理解了吧。

C#计算
i + i++ = 10 + 10= 20。这个时候++,i变为11,但是马上i被赋值为20,不就这样了……

不过C不同的编译器其运算结果也是不同的。