如何解决虽然循环提示不打印8次
void DrawStairs() {
// Declare Variable i
int i = 0;
// while loop
while (i == 0){
//Increment Variable
i + 1;
//Print # (Should print 8 times but it's not)
cout << "#\n";
if (i == 8)
break;
}
printf("\n\n\n\n\n\n\n\n\n\n%d",i);
上面在编译器资源管理器上的代码将永远打印#。如果我将if更改为if(i = 8),则当i = 8时它将中断,但只会打印#次。我希望它打印#8次。我该怎么做?
解决方法
i + 1;
这将计算i + 1
,然后对其不执行任何操作。最重要的是,它不会将评估结果分配给任何对象。您最有可能打算这样做...
i = i + 1;
...可以缩短为...
i += 1;
...或者,在特定情况下添加一个...
++i;
另外:
int i = 0;
while (i == 0){
++i;
// ...
if (i == 8)
break;
}
...有点破损,因为您的while
条件在第一次迭代后变成了false
。从上下文中可以明显看出,这是一种令人费解的表达方式...
int i = 0;
while ( i != 8 ) {
++i;
// ...
}
...可能最好表示为...
for ( int i = 1; i != 8; ++i ) {
// ...
}
请注意,在我的上一个示例中,i = 1
在执行任何操作之前,while
循环将i
递增一次(从0到1)(从0到1)。
此代码不会增加您的i
:
//Increment Variable
i + 1;
尝试:
++i;
,
您需要做的就是将while
循环设置为while (i < 8)
并更改i
语句。然后,您可以摆脱if
语句和break;
例如:
void DrawStairs()
{
// Declare Variable i
int i = 0;
// while loop
while (i < 8) {
//Increment Variable
++i;
//Print # (Should print 8 times but it's not)
std::cout << "#\n";
}
}
,
因为您不更改变量i
此行不执行任何操作:
//Increment Variable
i + 1;
这里您正在创建一个新值i + 1
,但是由于您没有将其分配给任何值,因此立即将其忘记了。我认为您想做的是:
//Increment Variable
i = i + 1; // or i += 1; or i++; or ++i;
此行仅在循环的第一次迭代(当我实际上为零时)为真。
while (i == 0){
在第一个循环运行之后,i
将不再为零,并且循环将退出。它当前永远运行的原因是您无需更改i
,因此它保持为零。
由于您要达到8,请将其更改为:
while (i < = 8) {
但是您可以使用for()
循环来使这种方法更整洁:
void DrawStairs() {
for (int i = 0; i <= 8; ++i){
//Print # (Should print 8 times but it's not)
cout << "#\n";
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。