goto语句

电脑杂谈  发布时间:2020-03-30 08:10:44  来源:网络整理

goto语句的语句表示_goto语句_c语言goto语句

来自cppreference.com

无条件地将控制权转移到所需位置.

goto语句的语句表示_c语言goto语句_goto语句

当控制权无法通过约定的结构转移到所需位置时使用.

goto语句导致无条件跳转(控制权的转换)到带有命名标签的语句(必须与goto语句出现在同一函数中),除非该跳转输入了可变长度数组或另一个修改后的变量范围(自C99起).

The

goto语句的语句表示_goto语句_c语言goto语句

label是一个标识符,后跟一个冒号(:)和一条语句. 标签是唯一具有功能范围的标识符: 它们可以在它们出现的功能中的任何位置使用(在goto语句中). 任何语句之前可以有多个标签.

允许访问不可变修改对象的范围:

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

c语言goto语句_goto语句_goto语句的语句表示

如果goto离开了VLA的范围goto语句的语句表示,则VLA将被释放(如果再次执行初始化goto语句的语句表示,则可以重新分配):

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

转到

c语言goto语句_goto语句_goto语句的语句表示

由于声明不是语句,因此声明前的标签必须使用空语句(冒号后的分号). 相同的规则适用于代码块结尾之前的标签.

C ++对goto语句施加了其他限制,但允许在标签成为C ++语句之前声明标签.

运行此代码

#include <stdio.h>
 
int main(void)
{
    // goto 可用于简单地离开多层循环
    for (int x = 0; x < 3; x++) {
        for (int y = 0; y < 3; y++) {
            printf("(%d;%d)\n",x,y);
            if (x + y >= 3) goto endloop;
        }
    }
endloop:;
}

输出:

(0;0)
(0;1)
(0;2)
(1;0)
(1;1)
(1;2)

来自“; oldid = 51924”


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-157533-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 瑚冬梅
        瑚冬梅

        你如果在伊拉克对美国说“关你鸟事”

      • 侯智昊
        侯智昊

        美国的这种行为

      热点图片
      拼命载入中...