我们理解for语句和if语句,它们的本质、思想、或者说"变量"是一回事,说白了就是,小括号()里的内容是真的,花括号{}里的语句就会被运行/执行。if语句执行一次就完事,for语句执行无数次。
体会下面的代码:
#include <iostream>
using namespace std ;
int main() {
if (1) { //必须理解掌握
cout << "if()里是真的,就执行花括号中的语句" << endl ;
//不需要跳出花括号
}
if (0) { //必须理解掌握
cout << "if()里是假的,就不执行花括号中的语句" << endl ;
//不需要跳出花括号
}
for (; 1;) { //必须理解掌握
cout << "for()里是真的,就执行花括号中的语句" << endl ;
break ;//打破循环/跳出循环/跳出花括号
}
for (; 0;) { //必须理解掌握
cout << "for()里是假的,就不执行花括号中的语句" << endl ;
break ;//打破循环/跳出循环/跳出花括号
}
for (; NULL;) { //特殊情况,了解一下即可
cout << "NULL是一个值,表示空值,NULL类似于0,也是假" << endl ;
break ;
}
for (;;) { //特殊情况,了解一下即可
cout << ";是一个运算/一个语句,表示空运算/空语句,"
<< "是运算就有结果/返回值,结果/返回值一般不是0,"
<< "所以一般情况下为真" << endl ;
break ;
}
}
理解了上面的代码之后,我们就可以自己控制循环的次数了,代码A如下:
//代码A
#include <iostream>
using namespace std ;
int main() {
int i = 1 ;
cout << "循环开始前..."<< endl;
cout << "循环开始前i的值:"<< i << endl;
for (; i<=10;) {
cout << "循环执行中..."<< endl;
cout << "循环执行中i的值:"<< i << endl;
i = i + 1 ;//i++在花括号中的最后一句。
}
cout << "循环结束..."<< endl;
cout << "循环结束后i的值:"<< i << endl;
}
理解了代码A,因为A这个结构太常见了,就有了下面的代码B,代码A与代码B是等价的。
//代码B
#include <iostream>
using namespace std ;
int main() {
int i ;
cout << "循环开始前..."<< endl;
cout << "循环开始前i的值:"<< 1 << endl;
for (i = 1 ; i<=10; i = i + 1 ) {
cout << "循环执行中..."<< endl;
cout << "循环执行中i的值:"<< i << endl ;
}
cout << "循环结束..."<< endl;
cout << "循环结束后i的值:"<< i << endl;
return 100 ;
}
我们最常见的循环写法1
其实下面这种写法,
for(int i = 1 ; i <= 10 ; i ++)
{
}
就是我们最常见的循环写法,
聪明的人,看到这个形式,敲了两三遍,大脑会直接定义/理解为,"走多少步,每一步迈多大,从哪开始,走到哪结束","这是一个循环,它循环了10次,相当于走了10步,从1开始,到10结束,步长是1"。
勤奋的人,看到这个形式,理解不了,动手自己敲上100次,就会了。
里奥老师,给大家把原理讲清,只要一遍,不需要多聪明,多勤奋,人人都能听懂学会。
理解了代码A之后,我们顺带理解一下while循环,下面的代码C和上面的代码A也是同效的
//代码C
using namespace std ;
int main() {
int i = 1 ;
cout << "循环开始前..."<< endl;
cout << "循环开始前i的值:"<< i << endl;
while( i <= 10 ) {
cout << "循环执行中..."<< endl;
cout << "循环执行中i的值:"<< i << endl;
i = i + 1 ;//i++在花括号中的最后一句。
}
cout << "循环结束..."<< endl;
cout << "循环结束后i的值:"<< i << endl;
}
既然while循环都理解了,我们再顺带理解一下do+while循环吧,看代码D。其实,do+while与while的区别,只有一点,那就是do+while无论如何都会至少执行一次循环体中的内空,而while可能一次也不会执行循环体中的内容。
有点猛士的思维,不管他三七二十一,先干了再说;或者说先斩后奏的思维。
//代码D
#include <iostream>
using namespace std ;
int main() {
int i = 11;//i=1时,do+while和while的效果一样。
cout << "循环开始前..."<< endl;
cout << "循环开始前i的值:"<< i << endl;
do {
cout << "循环执行中..."<< endl;
cout << "循环执行中i的值:"<< i << endl;
i = i + 1 ;//i++在花括号中的最后一句。
} while( i <= 10 ) ;
cout << "循环结束..."<< endl;
cout << "循环结束后i的值:"<< i << endl;
}