我是 C++ 的初学者。
我正在尝试使用 std::size_t
创建一个循环,但我不确定我是否正确使用它。变量 (i
) 应从 1
开始并迭代 i <= 10000
。每次迭代时,i
应该乘以 10。
因此,值应为 1
、10
、100
、1000
、10000
但是,我得到了 10
、110
、1110
、11110
int main()
{
for (std::size_t i = 1; i <= 10000; i += 1)
{
i *= 10;
std::cout << i << " \n";
}
}
答案 0 :(得分:4)
您的循环将 i
乘以 10
before 显示 i
,因此您永远不会看到 1
被打印出来。然后你还增加 i
1
after 乘以10
,你根本不应该这样做这种情况。
让我们来看看逻辑:
在第一次迭代中,i
从1
开始,乘以10
,所以打印10
,那么i
为增加 1
。
在第二次迭代中,i
为11
,乘以10
,所以打印110
,然后i
递增来自1
。
第三次迭代,i
为111
,乘以10
,所以打印1110
,然后i
递增来自1
。
等等。
要解决此问题,您需要完全去掉 i += 1
,并将 i *= 10
移出循环 body 并移入循环 counter,例如:
int main()
{
for(std::size_t i = 1; i <= 10000; i *= 10)
{
std::cout << i << " \n";
}
}
答案 1 :(得分:2)
值应该是 1, 10, 100, 1000, 10000
那么你想要这样的东西:
for (std::size_t i = 1; i <= 10000; i *= 10)
std::cout << i << " \n";
答案 2 :(得分:0)
虽然其他答案正确地解释了您的问题是什么,但如果您使用调试器逐步执行它,您可以在不在这里询问的情况下弄清楚这一点。
这里有两个关于在 Linux 和 Windows 上调试的 Stackoverflow 问题:
(这些是关于调试 C 程序,但同样的工具和环境也可用于调试 C++ 程序。)
如果您要调试程序,逐步执行单个命令,您会注意到@RemyLebeau describes - 您自己的更改顺序。
此外,为了将来参考 - 大多数 StackOverflow 用户都希望提问者执行他们的“尽职调查”,在向我们寻求解决方案之前做出合理的努力来找出他们的问题。既然您已经了解了调试器 - 请在询问“为什么我的程序没有按照我的预期运行”之前使用一个。