我试图用c在for循环中求和值。变量x = 1
的初始值,我想将其加倍一组次数并添加结果。我已经执行了for循环,但是总和总是与初始值相差。
例如,如果是x = 1
,模式应该是:
1, 2, 4, 8, 16
…total
应为31
。不幸的是,total
是一个。
int x = 1;
int y = 10;
int total;
for(int i = 1; i < y; i++)
{
x *= 2;
total += x;
}
printf("Total: %dn", total);
这个差1。如何让循环从1
而不是2
开始?
交换for循环体中的两条语句。此外,如果您想将所有这些都移动到一个函数中,那么将total初始化为0也是一个好主意。
与错误代码的情况一样,有不止一种方法来"修复"它。当你足够清楚地告诉你想要实现什么时,没有人知道你是如何实现它的。
-
正如@Ray total在他的回答中已经提到的,在循环前初始化
total
为0
,在循环内的加法后进行x *= 2
,可以得到正确的结果。 -
或者,可以说循环是OK的,因为它是在原始代码中。你只需要在循环之前将
total
初始化为1
。
哪一种方法更接近你最初想要实现的——只有你自己知道。在这两种情况下,请确保您执行了正确的迭代次数。