gpt4 book ai didi

c++ - while循环中的递增顺序

转载 作者:行者123 更新时间:2023-11-30 00:52:35 24 4
gpt4 key购买 nike

这里我有一个简单的算法,通过将所有等于输入数字的奇数相加来计算数字的平方,这样:

1 = 1 = 1-squared
1 + 3 = 4 = 2-squared
1 + 3 + 5 = 9 = 3-squared

等等。算法如下:

int triangleSquare(int number) {
int product = 0;
int currentOdd = 1;

while (number--) {
product += currentOdd;
currentOdd += 2;
}

return product;
}

我的问题是关于 segmentation 市场的:

while (number--) { ... }

出于某种原因,我在 while (--number)while (number--) 之间得到了不同的结果,我认为这是因为 --number 应该在执行 while 循环之前先递减(对于 number-- 反之亦然)。我的问题是,为什么它会有所作为?无论递增顺序如何,while 循环不应该总是最后执行吗?我一定遗漏了一些明显的东西,但这对我来说似乎很奇怪,就好像 number-- 使条件行为像 do {...} while()循环。

最佳答案

两个候选循环可以写成(等价于):

while (number-- != 0)
while (--number != 0)

考虑在循环入口处 number == 1 时会发生什么:

  1. number 的值与零比较,然后递减;因为 1 不是 0,所以执行循环体。
  2. number 的值递减,然后与零进行比较;因为 00,所以循环体被执行。

这就是区别!

关于c++ - while循环中的递增顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18768840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com