C 循环内外的不同整数值

C 循环内外的不同整数值,c,cs50,C,Cs50,我想使用一个在循环内创建的整数,但当我在循环外使用它时,它给出的值与在循环内创建的值不同。我需要从整数中提取第二个数字:17121,然后将其乘以2 在这种情况下,我由数字7和2下面的循环提取,并与2相乘,得到int sum=414的值 int cardNum = 17121; int otherDigits; int sum = 0; do { otherDigits = cardNum % 100 / 10 * 2; cardNum = cardNum / 100;

我想使用一个在循环内创建的整数,但当我在循环外使用它时,它给出的值与在循环内创建的值不同。我需要从整数中提取第二个数字:
17121
,然后将其乘以
2

在这种情况下,我由数字
7
2
下面的循环提取,并与
2
相乘,得到
int sum=414
的值

int cardNum = 17121;
int otherDigits;
int sum = 0;

do {
    otherDigits = cardNum % 100 / 10 * 2;
    cardNum = cardNum / 100;
    sum = otherDigits;
    printf("%i", sum);
} while (cardNum > 99);
当我尝试使用
int-sum时,问题出现了在循环之外,因为值
int sum变为
14
,而不是
414

int cardNum = 17121;
int otherDigits;
int sum = 0;

do {
    otherDigits = cardNum % 100 / 10 * 2;
    cardNum = cardNum / 100;
    sum = otherDigits;
    printf("%i", sum);
} while (cardNum > 99);
下一步是将提取的数字添加为
4+1+4
,但是在循环之外,我只能添加
14
1+4
值的数字。 不明白为什么
int sum的值在循环内部和外部是不同的

对于下一个数字,您需要将前一个数字“移开”:

do
{
  otherDigits = cardNum % 100 / 10 * 2;
  cardNum = cardNum / 100;
  if (otherDigits > 9)
    sum = sum * 100;
  else
    sum = sum * 10;
  sum = sum + otherDigits;
  printf("%i", sum);
}
while (cardNum > 99);

在循环内部,sum的值先是4,然后是14。打印时,这将生成字符串“414”,因为打印之间没有空格。这可能会让您产生一种错觉,认为循环内外的值不同,但实际上是相同的。

您会得到输出
414
,因为您在循环内打印时没有任何分隔符

循环重复两次:第一次打印
4
,第二次打印
14
。当它们一起运行时,您会得到
414

int cardNum = 17121;
int otherDigits;
int sum = 0;

do {
    otherDigits = cardNum % 100 / 10 * 2;
    cardNum = cardNum / 100;
    sum = otherDigits;
    printf("%i", sum);
} while (cardNum > 99);
使用尾随换行符打印,您将看到它工作,在一行上打印
4
,在另一行上打印
14


sum
在循环的最后一次迭代内和循环后的最终结果都是
14

您没有添加任何内容,请注意调用
sum
与它在代码中的用途不匹配。您没有更新它的值,只是在每次迭代中将它设置为
otherDigits
。您确定这就是所有代码吗?因为我没有看到你在循环外使用“sum”变量。请提供一个MCVE代码(),这正是我想要实现的!非常感谢。不客气。
int cardNum = 17121;
int otherDigits;
int sum = 0;

do {
    otherDigits = cardNum % 100 / 10 * 2;
    cardNum = cardNum / 100;
    sum = otherDigits;
    printf("%i", sum);
} while (cardNum > 99);