Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 而循环不能打印8次 void DrawStairs(){ //声明变量i int i=0; //while循环 而(i==0){ //增量变量 i+1; //打印#(应该打印8次,但不是) 库特_C++_If Statement_While Loop_Logic_Cout - Fatal编程技术网

C++ 而循环不能打印8次 void DrawStairs(){ //声明变量i int i=0; //while循环 而(i==0){ //增量变量 i+1; //打印#(应该打印8次,但不是) 库特

C++ 而循环不能打印8次 void DrawStairs(){ //声明变量i int i=0; //while循环 而(i==0){ //增量变量 i+1; //打印#(应该打印8次,但不是) 库特,c++,if-statement,while-loop,logic,cout,C++,If Statement,While Loop,Logic,Cout,这将计算i+1,然后对其不做任何处理。最重要的是,它不会将该计算的结果分配给任何对象。您很可能打算这样做 i + 1; …可以缩短为 i = i + 1; …或者,对于添加一个的特定情况 i += 1; 此外: ++i; …有些不正常,因为在第一次迭代后,while条件变为false。从上下文中可以清楚地看出,这是一种复杂的方式来表示 int i = 0; while (i == 0){ ++i; // ... if (i == 8) bre

这将计算
i+1
,然后对其不做任何处理。最重要的是,它不会将该计算的结果分配给任何对象。您很可能打算这样做

i + 1;
…可以缩短为

i = i + 1;
…或者,对于添加一个的特定情况

i += 1;

此外:

++i;
…有些不正常,因为在第一次迭代后,
while
条件变为
false
。从上下文中可以清楚地看出,这是一种复杂的方式来表示

int i = 0;

while (i == 0){
    ++i;
    // ...

    if (i == 8)
        break;
}
…这可能更好地表达为

int i = 0;

while ( i != 8 ) {
    ++i;

    // ...
}

请注意,在我的上一个示例中,
i=1
,因为您的
while
循环在使用它之前将
i
递增一次(从0到1)。

此代码不会递增您的
i

for ( int i = 1; i != 8; ++i ) {
    // ...
}
尝试:


由于不更改变量
i

此行不起任何作用:

++i;
在这里,您正在创建一个新值
i+1
,但这会立即被忘记,因为您没有将其分配给任何对象。我认为您想要做的是:

    //Increment Variable 
    i + 1;
这一行只有在循环的第一次迭代时才为真(当i实际上为零时)

第一个循环运行后,
i
将不再为零,循环将退出。它当前永久运行的原因是您没有更改
i
,因此它将保持为零

由于您想获得8,请将此更改为:

while (i == 0){

您只需将
while
循环设置为
while(i<8)
并更改
i
语句。然后您就可以摆脱
if
语句和
break;

例如:

void DrawStairs() {

    for (int i = 0; i <= 8; ++i){
        //Print # (Should print 8 times but it's not)
        cout << "#\n";
    }
}
void DrawStairs()
{
//声明变量i
int i=0;
//while循环
而(i<8){
//增量变量
++一,;
//打印#(应该打印8次,但不是)

std::cout尽管您试图在
i+1
中增加变量,但您没有分配任何内容(无左值)。因此该语句没有任何作用。它应该是
i=i+1;
i++;
当您在if语句中键入i=8时,它将8赋值给变量i,而不是进行逻辑比较。由于它是非零值,if语句的计算结果为true并中断。实际上,循环只执行一次。“=”是赋值人t运算符和“==”是逻辑比较运算符。如果您能了解基本原理,这将非常有用。顺便说一句,变量
i
递增后,它不再等于零,因此循环在1次迭代后终止。@Thomas但是
i
在OPs代码中从未实际递增。您的最后一个示例未编译。但是,假设您修复了语法错误,它将打印9次。@scohe001这是一个很好的例子,说明了为什么注释(比如解释代码的注释))不好。请将注释保存为“为什么”您正在做一些事情。代码是正确的还是注释!哪一个是规范的,因此您要修复哪一个?上面的代码模拟原始代码的行为(或者基于修复bug的代码的预期行为)。如果无法访问规范,我必须假设编写注释的人没有正确地执行此操作。:-)代码是对代码功能的最终定义。@scohe001至于不编译:那是因为它是一个狙击手。缺少的不仅仅是右大括号!但是添加了右大括号,以便进行编译。我会说是梳子注释和标题的省略使预期行为非常清楚,但是如果你认为问题或预期行为不清楚,我会告诉你投票以不清楚结束,而不是写一个可能有用/可能错误的答案:)在OP的
循环中,变量
I
将(应该)递增,因此
i
将不等于零,因此循环在一次迭代后终止。
    //Increment Variable 
    i = i + 1;    // or i += 1; or i++; or ++i;
while (i == 0){
while (i < = 8) {
void DrawStairs() {

    for (int i = 0; i <= 8; ++i){
        //Print # (Should print 8 times but it's not)
        cout << "#\n";
    }
}
 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";
        
       
    }
    
}