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);