我有以下代码
int a = 1, n = 1;
Convert.ToInt32(a = a++ + n--);
Console.WriteLine("a: " + a + " n : " + n);
//If you debug the second line of the code in quick watch the answer is 3.
上面代码的答案应该是2,所以它是。但是,如果我调试它并在quickwatch中看到值,则打印a的值3.任何想法为什么相同的代码会产生两个不同的值。
答案 0 :(得分:0)
另请注意,在计算中使用变量之后(但在将结果写入a之前),将执行拖尾变量的递增/递减运算符。
这将被解释为a = 1 + 1,而不是a = 2 + 0
特定程序流程:
从计算记忆中取出'a'中的1个。
将'a'增加1
从'n'中取出1来计算内存
将'n'减少1
将'a'设置为您之前提取的两个值的总和(不是这些变量的当前值) 通常将单独的步骤分成单独的行可以产生更好的调试。即: