仅适用于具有条件的循环

时间:2018-05-26 14:22:21

标签: c++ for-loop

有人可以解释for(; A--;)循环是如何工作的。它没有任何增量,所以它不应该永远运行吗?

int main(){
int A, B;

cout << "Anna t\x84htien m\x84\x84r\x84: "; //Give ammount of stars: 
cin >>A;
cout << endl;

for(; A--;){
    for(B = 0; A >= B; B++){
        cout << "* ";
    }
    cout << endl;
}

return 0;
}

4 个答案:

答案 0 :(得分:5)

只要条件成立,for循环就会运行。 A--相当于A-- != 0,所以这就是它要运行的时间。

有一件事可能很高兴知道,for循环可以包含的不仅仅是增量操作。 通常是,它类似于++i,但这不是必需的。但是在学校里,你可能无法了解一般for循环的实际情况。

答案 1 :(得分:1)

直到A达到0并且在A最初为>= 0的情况下将停止,否则,正如Eric指出的那样,行为是未定义的,因为溢出将发生,它可以以几种不同的方式结束。

答案 2 :(得分:1)

A--在条件部分找到。只要A!= 0,循环就会执行。由于在变量之后找到 - 运算符,因此在评估A值之后将执行减量。例如:

int A = 10;
//This loop will output: 9 8 7 6 5 4 3 2 1 0
for(;A--;){
  std::cout<<A<<" ";
}
A = 10;
//This loop will output: 9 8 7 6 5 4 3 2 1
for(;--A;){
  std::cout<<A<<" ";
}

答案 3 :(得分:1)

在C / C ++中,如果条件非零,则在任何意义上都是正确的。让我通过举例来说明这一点,

#include<iostream>
using namespace std;
int main()
{
    int a=5, b=-5;
    while(a)
    {
       cout<<"# ";
       a--;
    }

    cout<<"\n";

    while(b)
    {
       cout<<"* ";
       b++;
    }

return 0;
}

代码的输出将是:

# # # # # 
* * * * * 

如果你看一下这个,在'a'while循环里面,条件是正的,它会递减直到值为'0'。在值为0之前,条件被认为是真的,控制流执行while循环内的语句。

'b'while循环中,可以清楚地看到,即使'b'为负,while循环内的语句仍会执行,直到'b'的值递增为0。

可以看出,每个非零项被认为是真实条件,0(零)被认为是错误条件。这是一种错误的信念,(仅)1为真,0为假。

for循环的语法是for(declaration;condition;iteration)。如果缺少其中一个语句,循环仍将继续运行。只要条件为真,for loop就会起作用。控制流程首先来到声明,然后检查条件。如果条件为真,则它执行循环范围内的语句。最后,控件进入迭代语句并再次检查条件。在运行期间,如果在任何时刻循环条件变为false,则控件终止程序或在循环之后执行语句。