【问题标题】:the totalAmount of increment and decrement增量和减量的总量
【发布时间】:2012-03-27 16:12:10
【问题描述】:
namespace rojak2.cs
{
    class Program
    {
        static void Main(string[] args)
        {
            ArithmeticOperators();
        }

        static void ArithmeticOperators()
        {
            double totalAmount = 100;
            double result;

            Console.WriteLine("totalAmount is {0}", totalAmount);
            Console.WriteLine();

            result = totalAmount + 100;
            Console.WriteLine("totaAmount is {0}", result);

            result = totalAmount - 50;
            Console.WriteLine("totaAmount is {0}", result);

            result = ++totalAmount;
            Console.WriteLine("totaAmount is {0}", totalAmount);

            result = --totalAmount;
            Console.WriteLine("totaAmount is {0}", totalAmount);
        }
    }

}

我的问题是为什么结果的最后输出是 100 而不是 99?它应该从 100 而不是 101 减少。我不太明白。

【问题讨论】:

  • 命名空间名称以.cs 结尾真的很奇怪,因为命名空间不必(也不应该!)与文件一一对应。

标签: c# increment decrement


【解决方案1】:

因为预增量。变量值在其值被复制到结果之前递增。所以结果将有 101 作为预增量和减量的结果 - 它先减去一个然后复制值,因此你得到的结果为 100。

【讨论】:

    【解决方案2】:

    应该从 100 而不是 101 减少

    为什么?你可以告诉totalAmount在这个语句之前是101,因为这是上一行的输出!

    让我们看看变量在代码过程中是如何变化的:

    double totalAmount = 100;
    double result;
    result = totalAmount + 100;
    
    // totalAmount = 100; result = 200
    
    result = totalAmount - 50;
    
    // totalAmount = 100; result = 50
    
    result = ++totalAmount;
    
    // totalAmount = 101, result = 101
    
    result = --totalAmount;
    
    // totalAmount = 100, result = 100
    

    我怀疑是前缀递增/递减让你感到困惑。

    此声明:

    result = ++totalAmount;
    

    基本上相当于:

    totalAmount = totalAmount + 1;
    result = totalAmount;
    

    【讨论】:

      【解决方案3】:

      线

      result = ++totalAmount;
      

      不仅改变了result,还改变了totalAmount;这就是为什么最后一行是 101,而不是 100

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 2017-10-30
        • 2015-05-21
        • 1970-01-01
        相关资源
        最近更新 更多