有人可以解释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;
}
答案 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
,则控件终止程序或在循环之后执行语句。