虽然循环提示不打印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";
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...