[英]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.