如何解释多个增量

时间:2013-12-20 10:28:44

标签: c# auto-increment increment

我在接受采访时遇到了这个问题,如果你有同样的问题,我想知道你会给出什么答案。 不要在IDE中测试程序

public class MyClass
{
    private int _myInt;
    public int MyInt
    {
        get { return _myInt; }
        set { _myInt = value; }
    }

    public MyClass()
    {
        MyInt = 1;
    }
}

该程序应在屏幕上打印什么?更重要的是为什么

var myClass = new MyClass();

myClass.MyInt += myClass.MyInt;
myClass.MyInt = myClass.MyInt +++ 2;

Console.WriteLine(myClass.MyInt);

3 个答案:

答案 0 :(得分:2)

让我们看看一切

  1. 当您执行var myClass = new MyClass();时,MyInt = 1,因为您已在构造函数中初始化它

  2. 执行此操作时myClass.MyInt += myClass.MyInt; MyInt为1,因此您为自己添加了1,所以现在MyInt为2

  3. 当你这样做时myClass.MyInt = myClass.MyInt +++ 2;; MyInt是2,你加2,所以它变成4,后++暗示,赋值后增加(在这种情况下),所以它在MyInt中分配4
  4. 因此答案应为4,

    但是这是一个非常简单的案例,这个答案几乎表明post ++意味着evaluate current expression then increment而pre ++意味着increment then evaluate current expression,但事实并非如此(尽管如此,它出现在你的情况下) ,由语言设计师自己阅读更多关于here的信息

答案 1 :(得分:1)

如果你把第三行写成不同的东西,它会更清楚:

myClass.MyInt = myClass.MyInt++ + 2;

后增量返回2并随后递增。结果是2和2被添加到它。然后,通过加法(2 + 2)

的结果再次覆盖后增量的结果

答案 2 :(得分:0)

并且会是4,因为++post increment operator)的precedence更高,+更高+ precedence更高=然后{{1} }}