繁体   English   中英

整数的奇怪行为

[英]strange behavior of integers

我有以下代码

 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”设置为您先前提取的两个值的总和(而不是这些变量的当前值),通常将单独的步骤放到单独的行中可以产生更好的调试效果。 即:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM