整数的奇怪行为

本文关键字:整数 | 更新日期: 2023-09-27 18:20:36

我有以下代码

 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。知道为什么同一个代码会产生两个不同的值吗。

整数的奇怪行为

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

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

具体而言,程序流程:

将"a"中的1放入计算内存。

将"a"增加1

将"n"中的1放入计算内存

将"n"减少1

将"a"设置为先前提取的两个值的总和(而不是这些变量的当前值)经常将单独的步骤放入单独的行中可以产生更好的调试效果。即: