for循环中的sum问题

时间:2017-02-20 12:22:55

标签: c sum

对不起,这可能是一个愚蠢的问题,但我只是在C中移动我的第一步,我找不到任何具体的答案,所以:

让我们说我必须总结一些整数,为什么表达式sum += sum,在这段代码中只返回我输入时间2的最后一个数字(lastNumber * 2)?

unsigned int count = 0, sum = 0;
printf("How many numbers do you want to sum: ");
scanf("%u", &count);

for (int i = 1; i <= count; ++i) {
    printf("enter the integer: ");
    scanf("%u", &sum);
    sum += sum;
}

printf("the sum of all the %u numbers is: %u\n", count, sum);

PS:如果我用sum += x替换表达式,这个问题就解决了。 但我不明白为什么。

4 个答案:

答案 0 :(得分:1)

使用

scanf ("%u", &sum); // Let's say the user enters "7"

使用用户输入的新值覆盖每次迭代的sum值。然后再次使用

添加用户变量
sum = sum + sum;  // equivalent to sum = 7 + 7;

您可以使用两个变量来避免这种情况:

int sum = 0;
int userIn = 0;
scanf ("%u", &userIn);  // userIn has now the value of the user input
sum += userin; // Add that value to the sum

答案 1 :(得分:0)

当您执行scanf(...,&amp; sum)时,您实际上会覆盖其值。 所以,每次迭代你什么都不做。 通常,将变量专用于每个目的是一种好习惯。哪个 - 变量包含总和,另一个获取用户输入。

答案 2 :(得分:0)

你可能想要这个:

<xsl:variable
name="name"
select="'aav&quot;c&quot;dd'"/>
<xsl:value-of select="$name"/> 

答案 3 :(得分:0)

因为sum += sum;相当于sum = sum + sum;而且(sum + sum)相当于(2 * sum)。