【问题标题】:How is the 'e--' expression used in this simple exponent example?在这个简单的指数示例中如何使用“e--”表达式?
【发布时间】:2014-02-24 16:53:38
【问题描述】:

我理解这段代码中的每一个齿轮,除了一个部分:“e--;”在 While 循环中。谁能解释一下它的重要性?

public class Power 
{
    public static void Main() 
    {
        int e;
        int result;

        for(int i=0; i < 10; i++) 
        {
            result = 1;
            e = i;

            while(e > 0) 
            {
                result *= 2;
                e--;
            }

            Console.WriteLine(string.Format("2 to the {0} power is {1}", i, result));
        }
    }
}

【问题讨论】:

  • 如果这是家庭作业,我想这可以解释这一点。否则,请使用 Math.Pow 并收工。

标签: c# exponent


【解决方案1】:

您正在查看postfix decrement operator

它评估e 的值,然后从该值中减去一个;因为它是一个独立的语句,它只是从e 的值中减去一个。

【讨论】:

  • 这个问题暗示(并且this comment 明确指出)它不是询问运算符的定义是什么,而是为什么在这里使用它。在这个程序中将e 减一的要点是什么?
  • 谢谢你,@Servy。对不起我的模棱两可。那么究竟为什么会出现呢?
  • @user3002707 我在回答中解释了这一点。
  • @Servy 这不是我对措辞含糊的问题的阅读,但这是一个很好的问题。据我所知,e 存在没有意义,因为它的值既不是在 for 循环中也不是在输出中评估的。
  • @48klocs 链接的注释澄清了歧义,清楚地表明 OP 确实 了解 decriment 运算符的作用。至于e 毫无意义。这不是没有意义的。它肯定是有道理的,而且它被使用了。用在while(e &gt; 0)这一行中。
【解决方案2】:

这里的想法是简单地将 result 乘以 2 i 倍。它通过将e 设置为i 来实现这一点,循环的每次迭代都减去一个,并在它为正时循环。这意味着while 循环将始终循环i 次。你可以很容易(并且可以说更清楚)写:

for(int e = 0; e < i; e++)
    result *= 2;

【讨论】:

  • 所以如果 i 等于 1,则 e 被设置为 i 并且“结果 *= 2;”被计算。从那里,然后 e 递减回 0,对吗?我相信我在理解上的基本错误是 e = i 而不是 i = e。这样,输出将是 i 仍然增加 1 直到 9 并且每次都输出,而 e 每次减少以允许 while 循环始终发生,只要 e > 0。这听起来正确吗?感谢您的帮助!
  • @user3002707 i 在循环内永远不会发生变异。 e 在循环的每次迭代中重新定义。它正在创建一个嵌套循环,这样,对于外循环的每次迭代,内循环都会迭代i 次。
【解决方案3】:
while(e > 0)

这意味着只要e 大于零,您的循环就会运行。 e-- 在每次迭代中递减 e's value。如果您没有在循环内递减它,那么您将获得一个无限循环,因为您的条件将始终变为 true 并且您的循环不会结束。

【讨论】:

    【解决方案4】:

    e-- 只是减少了e 的值。它相当于e = e - 1;

    您减小该值的原因是最终退出while 循环;一旦将e 设置为i 的值,循环将无限期运行,除非e 的值小于或等于0,这使得while 循环条件e &gt; 0 为假。

    在大图中,您使用e 存储i 的当前值,然后使用它执行i 乘以语句result *= 2;。换句话说,您使用e 来计算在外部for 循环的当前迭代期间变量result 需要乘以2 的次数。

    这类似于做类似的事情,

    for (int i=0; i < 10; i++) 
    {
        result = 1;
        e = 0;
    
        for (e = i; e > 0; e--) 
        {
            result *= 2;
        }
    }
    

    因为while 循环实际上是在充当for 循环。

    【讨论】:

    • 你能给我更多的细节吗?我知道它会减少它,但是,我不明白这样做的意义。
    【解决方案5】:

    e 是您的计数器变量。它将重复while 循环,直到结果乘以指定的次数(这是循环开始时i 的任何值)。正如其他人所说,e-- 只是将e 的值减一。你可以阅读更多here。这意味着,在您提供的代码中,它将 result 乘以 2 e 乘以数学计算 2^i(即 2^0 = 12^1 = 22^2 = 4 等)。

    【讨论】:

      【解决方案6】:

      e--表示每次循环减1,e++加1

      查看这篇文章http://msdn.microsoft.com/en-us/library/36x43w8w.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-16
        相关资源
        最近更新 更多