C++自学笔记5(分支语句与循环语句)

if语句

主要是if()语句对括号内进行判断,判断其为0(假)或是除0以外数字(真)

int main()
{
    int x=6;
    if (x)
        Log("it is true");
}

if(),括号内为真,所以执行Log函数,打印出it is true

int main()
{
    int x=6;
    if (0)
        Log("it is false");
}

if(),括号内为假,所以执行Log函数,打印出it is false

if语句常常搭配else

if()判断为假才执行else后语句

int main()
{
    int x=6;
    if (x)
        Log("it is true");
    else
        Log("it is false"); 
}

调试台

it is true

if语句为真,那么编译器将忽略掉else与对应的Log函数也就是执行到第五行紧接着跳转到第八行。if语句为假时,才转到else并执行响应Log函数也就是执行到第四行if()紧接着跳转到第七行。

从中我们可以看到那些行执行那些行未执行。

还有一件事,我们不要将四五行写在一起,虽然if语句在只有一行执行语句下可以进行,不写花括号、Log与if并列。但是我们尽量还是不要将if与Log写在同一行,花括号可以省略。因为你写在一行时在此处打断点,你会分不清楚断点停在if()选择上还是Log语句上,对debug带来不必要的麻烦。

int mian()
{
    int x = 6;
    if(x)
        Log("it is true")
    else if(x == 6)
        Log("it is 6")
    else
        Log("it is false")
}

在上述例子中,你可以想一想最后打印出来的是什么?

it is true 

it is 6

真的是这样吗?

我们可以将else if分解

int mian()
{
    int x = 6;
    if(x)
        Log("it is true")
    else 
        {
            if(x == 6)
                Log("it is 6")
        }
    else
        Log("it is false")
}

if()判断为假才执行else后语句

我们可以看到if为真,所以两个else都不执行。调试台输出为

it is true 

如果就是想要判断输出设是不是等于6,怎么改写?

将else if改写成if即可,调试台输出

it is true 

it is 6

还有一件事,if语句在编程时开销很大,所以逐渐熟悉之后减少使用if语句会让你的代码更快。

循环语句

if语句解决了,选择性的问题,在什么时候去做a在什么时候去做b。

循环语句解决什么呢?

当你想将某些文字重复打印10次时,你可以将其复制十次放到一个函数后输出,那如果我要循环100次呢,反复地复制是不是很烦,所以循环语句出现了。

for循环

int main ()
{
    for (int i = 0;i<10;i++)
    {
        Log("hello");
    }
}

for的括号内分为三个部分,一是申明部分我们给i赋值为0,二是条件部分我们使其小于10,也就是循环十次,三是程序执行完Log函数后执行i++,i变为1,其继续与第二部分的条件比较,满足则继续循,循环式十次后即会退出。

我们还可以将格式转变下

int main ()
{
    int i = 0
    for (;i<10;)
    {
        Log("hello");
        i++;        
    }
}

这里的执行效果都是打印十次hello,我们可以更加清晰看到for括号内三部分的执行顺序。

while循环

int main ()
{
    int i = 0;
    while(i<10)
    {
        Log("hello");
        i++;
    }
}

emmmmm这么一看while循环与for循环使用结果上看都是打印十次hello。

什么时候用for什么时候用while呢?

没有要求,全看个人习惯。不过在某些场景下你就会看出选择for好还是while好。

制作一款游戏,我们如果不使用循环就只会渲染一帧画面,加入循环我们就可以做到只要用户不退出就一直渲染,在这个需求下我们用for还是while呢?

int main ()
{
    int running = 1;
    while(running)
    {
        Log("hello");
    }
}

对于while函数我们可以做到以上表达,只要用户不退出我们running就为1,就一直执行Log渲染程序。当用户退出时running置为0,我们就退出循环不在渲染。

对于某些具有次数要求的程序时我们更常用for,比如数组的偏移量0 1 2 3正好对应着for循环的0 1 2 3。这时候我们更加关注的是每次的变化我们就选择for语句。

do while循环使用少,自行了解吧。

============================24.7.22========================================

控制流语句

continue       break        return

控制流语句搭配循环语句可以做的,在某某条件下从循环中跳出。

continue

continue只被用在循环语句中,执行到continue时跳出,执行下一次迭代。

int main ()
{
    
    for (int i = 0;i<10;i++)
    {
        if(i%2 == 0)
            continue;
        Log("hello");  
        std::cout<<i<<std::endl;    
    }
}

我们已经知道不加if语句的for循环函数迭代了10次,i值从0到9

加入if语句后由于continue的存在当满足(i%2==0)i=0、2、4、6、8时进行下次迭代,意味着跳过了i=0、2、4、6、8时对应的Log函数与打印i值。

调试台打印为

hello

1

hello

3

hello

5

hello

7

hello

9

所以,我们知道continue是跳入下一次迭代中。

break

break 常用在switch语句中,跳出循环。

int main ()
{
    
    for (int i = 0;i<10;i++)
    {
        if(i%2 == 0)
            break;
        Log("hello");  
        std::cout<<i<<std::endl;    
    }
}

我们将continue替换为break,运行后发现调试台什么都没打印,这是为什么?

原因是i=0,if语句为真,执行break,break跳出循环函数,跳到第十行

int main ()
{
    
    for (int i = 0;i<10;i++)
    {
        if((i+1)%2 == 0)
            break;
        Log("hello");  
        std::cout<<i<<std::endl;    
    }
}

按照以上更改,当i=1/3/5/7/9时if语句判定为真,会执行其下的条件语句。但是,由于break的存在i=1时会直接跳出循环。跳到第十行

调试台打印

hello

0

return

return 返回一个数值,必须返回点什么东西。如果函数名前是void可以不写return

int main ()
{
    
    for (int i = 0;i<10;i++)
    {
        if((i+1)%2 == 0)
            return 0;
        Log("hello");  
        std::cout<<i<<std::endl;    
    }
}

将break替换成return 0;你会发现调试台打印为

hello

0

看起来与break代码一致,但是当i=1运行到break时,跳到第十一行,意味着main函数结束。

如果for循环之后还有函数,也会一并跳过。

return并非是专门应用于循环之中,它哪里都可以去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少杰是小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值