整数的奇怪行为

时间:2014-09-03 05:08:30

标签: c# .net int

我有以下代码

 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.任何想法为什么相同的代码会产生两个不同的值。

1 个答案:

答案 0 :(得分:0)

另请注意,在计算中使用变量之后(但在将结果写入a之前),将执行拖尾变量的递增/递减运算符。

这将被解释为a = 1 + 1,而不是a = 2 + 0

特定程序流程:

从计算记忆中取出'a'中的1个。

将'a'增加1

从'n'中取出1来计算内存

将'n'减少1

将'a'设置为您之前提取的两个值的总和(不是这些变量的当前值) 通常将单独的步骤分成单独的行可以产生更好的调试。即: