C语言 goto 语句的基本格式是什么?如何使⽤?

一、问题

        goto 语句为⽆条件转向语句,它可以使程序⽴即跳转到函数内部的任意⼀条可执⾏语句,这样使⽤起来⽐较灵活。那么,该语句的基本格式是什么?又该如何使⽤呢?

二、解答

1. goto 语句的基本格式

        goto 关键字后⾯带⼀个语句标号,该语句标号是同⼀个函数内某条语句的标号。标号可以出现在任何可执⾏语句的前⾯,并且以⼀个冒号“ :”作为后缀。 通常的情况下,goto 与条件语句配合使⽤,可以⽤来实现条件转移,构成循环或者跳出循环体等功能。⼀般形式为:

goto 语句标号;

        在 switch 结构中,每个 case 关键字及后⾯的常量都是⼀个标号。 语旬标号⽤标识符表⽰,要遵循变量名的命名规则,即由字母、数字和下划线组成, 并且第⼀个字符不能是数字。如:

goto 25;

这个语句就是不合法的。

2. goto 语句的使⽤

        goto 后的语句标号就是要跳转的⽬标,当然这个语句标号要在程序的其他地⽅给出, 但是其语句标号要在函数内部。例如:

goto Show;
printf("the message before ShowMessage");
Show: 
printf("ShowMessage");

        上⾯代码中,goto 后的 Show 为跳转的语句标号,⽽其后 “Show:” 代码表⽰ goto 语句要跳转的位置。这样,在上⾯的语句中,第⼀个 printf0函数不会执⾏,⽽会执⾏第⼆个printf()函数。

        goto 跳转语句跳转的⽅向可以向前,也可以向后;可以跳出⼀个循环,也可以跳⼊⼀个循环。

         下⾯通过⼀个例⼦介绍使⽤ goto 语句如何从循环内部跳出。 要求程序在执⾏循环操作的过程中,当⽤户输⼊退出指令后,程序跳转到循环外部执⾏程序退出前的显示操作,程序代码如下:

#include <stdio.h>
int main()
{
    int i;
    int j;
    for (i = 1; i < 10; i++)
    {
        printf("Tne i is:%d\n", i);
        do
        {
            printf("Enter a number to j\n");
            printf("(0 is quit,99 for the next i)\n");
            scanf("%d", &j);
            if (j == 0)
            {
                goto exit;
            }
        } while (j != 99);
    }
exit:
    printf("Exit the propram!\n");
    return 0;
}

(1)程序运⾏时,for 循环控制程序步骤,程序输出的循环步骤为1。信息提⽰输⼊数字,其中0表示退出,99 表示下⼀个步骤。

(2)在for 循环中使⽤ do...while 判断⽤户输⼊,当条件为假时,循环结束,执⾏ for 循环的下⼀步。在程序中假如⽤户输⼊数字 3,既不退出也不到下⼀步骤,程序显示继续输⼊数字。当输⼊数字为99 时,跳转到下⼀步,显⽰提示信息 “The step is 2”。

(3)当⽤户输⼊的是0时,那么通过 if 语句进⾏判断为真,执⾏其中的 goto 语句执⾏跳转。其中 exit 为跳转的语句标号。循环的外部使⽤ “exit:”表示 goto跳转的位置,然后执⾏ printf 语句,输出⼀段信息,表⽰程序结束。

程序运⾏结果如图

Tne i is:1
Enter a number to j
(0 is quit,99 for the next i)
3
Enter a number to j
(0 is quit,99 for the next i)
99
Tne i is:2
Enter a number to j
(0 is quit,99 for the next i)
0
Exit the propram!

三、总结

        goto 语句虽然能够按照⾃⼰的意愿改变程序的运⾏⽅向,但是这样会使程序流程⽆规律,可读性较差,所以⼀般不使⽤ goto,⽽且它的功能⽤ break 和 continue 都能实现,可以⽤其代替 goto。

说明:

        除⾮能较⼤程度地提⾼程序的效率,否则不⽤ goto 语句。

相关推荐

  1. C语言 goto 语句基本格式什么如何使

    2024-03-10 18:34:01       38 阅读
  2. C语言如何限定外部变量使范围?

    2024-03-10 18:34:01       34 阅读
  3. C语言什么全局变量?如何

    2024-03-10 18:34:01       33 阅读
  4. c语言goto语句

    2024-03-10 18:34:01       62 阅读
  5. C语言 goto语句

    2024-03-10 18:34:01       22 阅读
  6. C语言什么外部函数?怎么

    2024-03-10 18:34:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 18:34:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 18:34:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 18:34:01       82 阅读
  4. Python语言-面向对象

    2024-03-10 18:34:01       91 阅读

热门阅读

  1. 解读电影级视频生成模型 MovieFactory

    2024-03-10 18:34:01       44 阅读
  2. 数据分析 - 面经 - 灵狐科技

    2024-03-10 18:34:01       44 阅读
  3. 【数论】莫比乌斯反演巩固1

    2024-03-10 18:34:01       35 阅读
  4. 基于51单片机的秒表系统设计

    2024-03-10 18:34:01       37 阅读
  5. powershell远程拷贝文件到windows 服务器

    2024-03-10 18:34:01       39 阅读
  6. the demo for C# multicast delegate 多播委托

    2024-03-10 18:34:01       38 阅读
  7. 【docker】docker常用命令

    2024-03-10 18:34:01       36 阅读
  8. css元素的隐藏和显示

    2024-03-10 18:34:01       42 阅读
  9. BSD-3-Clause是一种开源软件许可协议

    2024-03-10 18:34:01       42 阅读
  10. Linux删除Mysql

    2024-03-10 18:34:01       42 阅读
  11. js 类数组 转 数组

    2024-03-10 18:34:01       47 阅读