我对C#编译器如何处理前后递增和递减感到有些困惑。
当我编写以下代码时:
int x = 4; x = x++ + ++x;
x之后将具有值10。我认为这是因为预增量设置x为5,这使其5+5 求值为10。然后,后增量将更新x为6,但是将不会使用此值,因为10它将分配给x。
x
5
5+5
10
6
但是当我编写代码时:
int x = 4; x = x-- - --x;
然后x将是2之后。谁能解释为什么会这样?
2
x--将为4,但在的当前时刻将为3 --x,因此它将结束为2,那么您将拥有
x--
--x
x = 4 - 2
顺便说一句,你的第一种情况是 x = 4 + 6
x = 4 + 6
这是一个小示例,它将打印出每个零件的值,也许这样您会更好地理解它:
static void Main(string[] args) { int x = 4; Console.WriteLine("x++: {0}", x++); //after this statement x = 5 Console.WriteLine("++x: {0}", ++x); int y = 4; Console.WriteLine("y--: {0}", y--); //after this statement y = 3 Console.WriteLine("--y: {0}", --y); Console.ReadKey(); }
打印出来
x++: 4 ++x: 6 y--: 4 --y: 2