我想使用在循环内创建的整数,但是当我在循环外部使用它时,它提供的值与内部不同。我需要从整数中提取每个第二个数字: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
。
下一步是将提取的数字添加为4 + 1 + 4
,但是在循环之外,我只能添加值14
或1 + 4
的数字。
不明白为什么int sum;
的值在循环内外是不同的。
答案 0 :(得分:4)
在循环中,sum的值先是4,然后是14.打印时,这会给出字符串" 414"因为打印件之间没有空隙。这可能会让你觉得循环内部和外部的值不同,但实际上它是相同的。
答案 1 :(得分:2)
您得到输出414
,因为您在循环内打印时没有任何类型的分隔符。
循环迭代两次:第一次打印4
,然后第二次打印14
。当那些一起运行时,你得到414
。
使用尾随换行符进行打印,您会看到它有效,在一行打印4
,在另一行打印14
。
sum
在循环的最后一次迭代内和循环之后的最终结果是14
。
答案 2 :(得分:1)
你需要将以前的数字“移动”到下一个数字之外:
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);