Visual Basic C#输出是意外的

时间:2015-09-07 10:37:33

标签: c#

Visual Basic和C# 只是学习基础知识和这些非常简单的几行输出让我很困惑。

int x = 10;
int y = x++;
Console.WriteLine(x);
Console.WriteLine(y);

输出是11然后是10.我期待10,然后是11.我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

x++在使用后递增x(在您的示例中将其当前值分配给y后)。另一方面,++x在使用之前递增x。所以

int x = 10;
int y = ++x;   // Note that the plus signs stand before x, not after!
Console.WriteLine(x);
Console.WriteLine(y);

会导致

  

11

     

11

如果您想将x+111)分配给y并将x保留在10

int x = 10;
int y = x + 1;
Console.WriteLine(x);
Console.WriteLine(y);
  

10

     

11

答案 1 :(得分:0)

y = x++将先分配然后再增加。 y = ++x将首先递增,然后分配。在您的示例中,您首先为y分配值x,然后将x增加到11

由于intvalue type(与参考类型相比),更改x的值不会影响分配给y的值。

int x = 10;
int y = x++; // Assigns the value of x to y (i.e. 10), THEN incrementing x to 11.
Console.WriteLine(x); // Writes the current value of x (i.e. 11).
Console.WriteLine(y); // Writes the current value of y (i.e. 10).