goto 语句

无条件转移控制流。

当使用其他语句不可能将控制转移到所需位置时使用。

语法

属性(可选) goto 标号 ;

C++解释

goto 语句将控制转移到标号所指定的位置。goto 语句必须与它所用的 标号 处于相同的函数中,它出现于标号的前后均可。

若控制的转移退出了任何自动变量的作用域(例如通过回跳到这种变量声明之前的位置,或向前跳出作为变量作用域的复合语句),则为所有退出作用域的变量以其构造顺序的逆序调用析构函数。

goto 不能将控制转移到 try 块或 catch 子句之内,但能将控制转移离开 try 块或 catch 子句(遵循上述有关作用域中的自动变量的规则)

若控制被转移进入了任何自动变量的作用域(例如通过向前跳过声明语句),则程序非良构(不能编译),除非进入作用域的所有变量拥有

  1. 标量类型,且声明不带初始化器
  2. 拥有平凡默认构造函数和析构函数的类类型,且声明不带初始化器
  3. 上述之一的 cv 限定版本
  4. 上述之一的数组

(注意:相同规则适用于控制转移的所有形式)

注意

在 C 编程语言中,goto 语句的限制较少,并且能进入除变长数组或可变修改指针之外的任何变量的作用域。

C解释

goto 语句导致无条件跳转(控制的转译)到前附具名 标号 (必须与 goto 语句出现于同一函数中)的语句,除非此跳转会进入变长度数组或另一可变修改类型的作用域 (C99 起)。

标号 是一个后随冒号( : )和一条语句的的标识符。标号是仅有的拥有函数作用域的标识符:能在其所出现于的函数中的任何位置使用它们(在 goto 语句中)。任何语句前可以有多个标号。

goto lab1; // OK :进入常规变量的作用域 int n = 5;lab1:; // 注意未初始化 n ,如同以 int n; 声明 // goto lab2; // 错误:进入二个 VM 类型的作用域 double a[n]; // VLA int (*p)[n]; // VM 指针lab2:

若 goto 离开 VLA 的作用域,则 VLA 会被解分配(而且可能会被再分配,若再度执行其初始化):

{ int n = 1;label:; int a[n]; // 重分配 10 次,每次拥有不同的大小 if (n++ < 10) goto label; // 离开 VM 的作用域}

示例

#include  int main(void){ // goto 可用于简单地离开多层循环 for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { printf("(%d;%d)

跳转语句_C/C++中的goto语句相关推荐

  1. c语言解析sql语句_C语言中嵌入式SQL语句

    实验内容: 掌握SQL Server 2000的预编译程序NSQLPREP.EXE的使用(以课本例题1进行调试): 实验步骤: 一.数据库环境配置 1.创建xuesheng数据库,建立student表 ...

  2. c语言goto语句用法_C语言中的goto语句该不该使用?

    关于C语言的goto语句存在很多争议,很多书籍都建议"谨慎使用,或者根本不用".这里先不做过多的讨论,存在即合理,既然是C语言中的一个知识点,我们还是有必要学会使用.先看一些got ...

  3. 将 C++ 中的 goto 语句转化为非 goto 语句

    将 C++ 中的 goto 语句转化为非 goto 语句   goto 语句是公认的被编程语言支持但不建议使用的语句.一方面,在某些时候使用 goto 语句能增加代码的可读性,降低其复杂性.另一方面, ...

  4. 在java中goto是意思,关于Java中的goto语句

    自学Java遇到的问题1 goto语句的问题 1.1 背景 2.1 尝试 3.1 总结 goto语句的问题 今天是我自学Java第4天,开始写博客记录学习中遇到的问题.给后来者一些借鉴,也给自己以后回 ...

  5. python替代goto_如何在 Python 中实现 goto 语句

    Python 默认是没有 goto 语句的,但是有一个第三方库支持在 Python 里面实现类似于 goto 的功能:https://github.com/snoack/pyt.... 比如在下面这个 ...

  6. python语言goto_如何在 Python 中实现 goto 语句

    Python 默认是没有 goto 语句的,但是有一个第三方库支持在 Python 里面实现类似于 goto 的功能:https://github.com/snoack/pyt.... 比如在下面这个 ...

  7. python中的goto函数_如何在 Python 中实现 goto 语句

    Python 默认是没有 goto 语句的,但是有一个第三方库支持在 Python 里面实现类似于 比如在下面这个例子里, from goto import with_goto @with_goto ...

  8. php goto语句,PHP中的goto语句使用范例

    本篇文章主要讲述的是如何在PHP里使用goto用法,具有一定的参考价值,感兴趣的朋友可以了解一下. 我们先举个简单示例:<?php goto LABEL; //这个标签自定义echo '乔峰'; ...

  9. c语言中的if语句_If ... C中的其他语句解释

    c语言中的if语句 Conditional code flow is the ability to change the way a piece of code behaves based on ce ...

最新文章

  1. Flutter开发之《头条 Flutter iOS 混合工程实践》笔记(54)
  2. 一个严重损坏Excel深度修复案例
  3. 生产事故 java_记一次生产事故:30万单就这样没了!
  4. JS中的基本和引用类型传递的比较
  5. 一键安装zabbix监控redis
  6. poj 2255 Tree Recovery
  7. Spring @Autowired注解在非Controller注入为null,Springboot @Reference注入为null解决方案
  8. RFC2616中文版(8)连接
  9. C#数据库类(zz)
  10. 软件测试管理的基本要素
  11. 【活动报名】1024,一起过节,一起品网易/美团/贝壳/PingCAP/爱奇艺云原生实践干货!
  12. 如何使用 Putty 以密钥 private key 的方式登录腾讯云主机
  13. 小小故事--大大道理
  14. 每个人都有第一桶金——潘石屹
  15. python爬虫批量下载“简谱”
  16. 【案例】简单图片和段落上下排版制作
  17. Docker|Maven编译推送Docker服务器生成镜像
  18. 阿里云使用笔记-第三篇-使用阿里云App连接实例
  19. yield方法的用法
  20. codeforces 711 C. Coloring Trees (dp)

热门文章

  1. 奇葩说之RTC的那些事
  2. 音视频技术开发周刊 73期
  3. HTTP over QUIC重命名为“HTTP / 3”协议
  4. LeetCode——分治
  5. 数据结构与算法之RandomPool结构和岛问题
  6. OpenResty简介及学习笔记
  7. EasyRTMP实现的rtmp推流的基本协议流程
  8. 游戏数仓分析(三)SpringBoot项目对数据进行可视化展示,每日注册用户
  9. 终止进程的方法总结(使用)
  10. Scala _04Scala字符串