【问题标题】:strange behavior of integers整数的奇怪行为
【发布时间】:2014-09-03 05:08:30
【问题描述】:

我有以下代码

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

【问题讨论】:

  • 它为我显示 2。
  • @Partha 调试它并在快速观察中查看值,然后是 3
  • 我的观察是,在该行上的代码执行之前,该行上的断点被命中。您应该按键盘上的 F10 来执行代码行,然后您将看到变量包含预期值。
  • 我认为@MuneebZulfiqar 对此是正确的。当调试时该行突出显示时,您需要按 F10 以过去该行以便执行其代码。

标签: c# .net int


【解决方案1】:

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

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

特别是程序流程:

从 'a' 中取出 1 到计算内存中。

将“a”增加 1

从 'n' 中取出 1 个到计算内存中

将“n”减 1

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多