📜  C / C++中的goto语句

📅  最后修改于: 2021-05-30 17:53:41             🧑  作者: Mango

goto语句是一个跳转语句,有时也称为无条件跳转语句。 goto语句可用于从函数的任何位置跳转到任何位置。
语法

Syntax1      |   Syntax2
----------------------------
goto label;  |    label:  
.            |    .
.            |    .
.            |    .
label:       |    goto label;

在以上语法中,第一行告诉编译器转到或跳到标记为标签的语句。这里label是一个用户定义的标识符,它指示目标语句。 “ label:”之后紧随其后的语句是目标语句。 “标签:”也可以出现在“转到标签”之前;上面语法中的语句。
去
以下是有关如何使用goto语句的一些示例:
例子:

  • 类型1 :在这种情况下,我们将看到与上面的语法1相似的情况。假设我们需要编写一个程序来检查数字是否为偶数,并使用goto语句进行相应打印。下面的程序说明了如何执行此操作:
    C
    // C program to check if a number is
    // even or not using goto statement
    #include 
      
    // function to check even or not
    void checkEvenOrNot(int num)
    {
        if (num % 2 == 0)
            // jump to even
            goto even; 
        else
            // jump to odd
            goto odd; 
      
    even:
        printf("%d is even", num);
        // return if even
        return; 
    odd:
        printf("%d is odd", num);
    }
      
    int main() {
        int num = 26;
        checkEvenOrNot(num);
        return 0;
    }


    C++
    // C++ program to check if a number is
    // even or not using goto statement
    #include 
    using namespace std;
      
    // function to check even or not
    void checkEvenOrNot(int num)
    {
        if (num % 2 == 0)
        // jump to even
            goto even; 
        else
        // jump to odd
            goto odd; 
      
    even:
        cout << num << " is even";
        // return if even
        return; 
    odd:
        cout << num << " is odd";
    }
      
    // Driver program to test above function
    int main()
    {
        int num = 26;
        checkEvenOrNot(num);
        return 0;
    }


    C
    // C program to print numbers
    // from 1 to 10 using goto statement
    #include 
      
    // function to print numbers from 1 to 10
    void printNumbers()
    {
        int n = 1;
    label:
        printf("%d ",n);
        n++;
        if (n <= 10)
            goto label;
    }
      
    // Driver program to test above function
    int main() {
        printNumbers();
        return 0;
    }


    C++
    // C++ program to print numbers
    // from 1 to 10 using goto statement
    #include 
    using namespace std;
      
    // function to print numbers from 1 to 10
    void printNumbers()
    {
        int n = 1;
    label:
        cout << n << " ";
        n++;
        if (n <= 10)
            goto label;
    }
      
    // Driver program to test above function
    int main()
    {
        printNumbers();
        return 0;
    }


    输出:
    26 is even
    
  • 类型2 ::在这种情况下,我们将看到类似于上面的语法1中所示的情况。假设我们需要编写一个程序,使用goto语句打印从1到10的数字。下面的程序说明了如何执行此操作。

    C

    // C program to print numbers
    // from 1 to 10 using goto statement
    #include 
      
    // function to print numbers from 1 to 10
    void printNumbers()
    {
        int n = 1;
    label:
        printf("%d ",n);
        n++;
        if (n <= 10)
            goto label;
    }
      
    // Driver program to test above function
    int main() {
        printNumbers();
        return 0;
    }
    

    C++

    // C++ program to print numbers
    // from 1 to 10 using goto statement
    #include 
    using namespace std;
      
    // function to print numbers from 1 to 10
    void printNumbers()
    {
        int n = 1;
    label:
        cout << n << " ";
        n++;
        if (n <= 10)
            goto label;
    }
      
    // Driver program to test above function
    int main()
    {
        printNumbers();
        return 0;
    }
    
    输出:
    1 2 3 4 5 6 7 8 9 10
    

使用goto语句的缺点:

  • 不建议使用goto语句,因为它会使程序逻辑非常复杂。
  • 使用goto使得分析和验证程序(尤其是涉及循环的程序)的正确性的任务非常困难。
  • 使用break和continue语句可以简单地避免使用goto。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。