对不起,这可能是一个愚蠢的问题,但我只是在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
替换表达式,这个问题就解决了。
但我不明白为什么。
答案 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"c"dd'"/>
<xsl:value-of select="$name"/>
答案 3 :(得分:0)
因为sum += sum;
相当于sum = sum + sum;
而且(sum + sum)相当于(2 * sum)。