对于仅带条件的循环

For loop with condition only

本文关键字:循环 条件 于仅带      更新时间:2023-10-16

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

int main(){
int A, B;
cout << "Anna tx84htien mx84x84rx84: "; //Give ammount of stars: 
cin >>A;
cout << endl;
for(; A--;){
for(B = 0; A >= B; B++){
cout << "* ";
}
cout << endl;
}
return 0;
}

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

很高兴知道的一件事是,for循环可以包含的不仅仅是增量操作。通常,它类似于++i,但这不是必需的。不过,在学校里,你可能不知道for循环到底有多一般。

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<<" ";
}

在 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 之前,条件称为 true,并且控制流执行 while 循环中的语句。

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

可见,每个非零项都被认为是一个真条件,而一个0(零(被认为是一个假条件。错误地认为(只有(1是真的,0是假的。

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

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