【共读Primer】38.[5.5]跳转语句 Page170

在C++中一共存在四中跳转语句:

break

continue

goto

return

return代表返回当前函数,这个之前已经有了介绍,接下来我们介绍其他3个跳转语句的作用。

 

break:简单的将就是跳出当前的while、do while、for 或 switch 语句块范围。然后继续执行其后的内容。
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;

int main()
{
    // break的跳出作用以及起效的范围
    string buf;
    while(cin >> buf && !buf.empty())
    {
        switch(buf[0])
        {
            case '-':
                for(auto it = buf.begin() + 1; it != buf.end(); ++it)
                {
                    if(*it == ' ')
                        break;    // 1# 离开for循环
                }
            break;// 2# 离开 switch语句
            case '+':
                // ...
            break;
        }
        // 结束switch:break 2# 将执行位置跳转到这里
    }// 结束while
}

 

continue: 将最近的循环的当次循环过程终止,直接开始下一次的循环,该跳转语句只能作用于for、while、do while
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;

int main()
{    
        string buf;
    while(cin >> buf && !buf.empty())
    {
        if(buf[0] != '_')
            continue;// 如果遇到不是_字符,则不进行处理,直接读取下一次
        // 
    }// 结束while
}
goto: 无条件的直接跳转到一个指定的标签
int get_size()
{
    static int i = -8;
    i += 3;
    cout << "run get_size, value i :" << i << endl;
    return i;
    
}

int main()
{
begin:
    int sz = get_size();
    if(sz <= 0)
    {
        goto begin;
    }
}

将本节所有代码集中,并稍作修改(因为本节中无线循环太多,如果不修改,根本就不可能运行结束)。

#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;

int get_size()
{
    static int i = -8;
    i += 3;
    cout << "run get_size, value i :" << i << endl;
    return i;
    
}

int main()
{
    // break的跳出作用以及起效的范围
    string buf;
    while(cin >> buf && !buf.empty())
    {
        switch(buf[0])
        {
            case '-':
                for(auto it = buf.begin() + 1; it != buf.end(); ++it)
                {
                    if(*it == ' ')
                        break;    // 1# 离开for循环
                }
            break;// 2# 离开 switch语句
            case '+':
                buf[0] = ';';
                cout << "break; while" << buf << endl;
            break;
        }
        
        // 结束switch:break 2# 将执行位置跳转到这里
        if (buf[0] == ';')
            break;// 跳出最外层的while循环
    }// 结束while
    
    // continue 不对switch起作用,只对for while do while起作用
    while(cin >> buf && !buf.empty())
    {
        if(buf[0] != '_')
            continue;// 如果遇到不是_字符,则不进行处理,直接读取下一次
        if(buf == "_exit")
            break;
    }// 结束while
    
begin:
    int sz = get_size();
    if(sz <= 0)
    {
        goto begin;
    }
}

给大家一个小题目,如何在不强制终止的情况下,顺利的结束本程序??

 

转载于:https://www.cnblogs.com/ChattyKu/p/9558394.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值