深入详解for循环语句——里奥老师乾坤大挪移

我们理解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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容