首页 > 解决方案 > c语言中goto语句的使用频率是多少?

问题描述

我是c的初学者。我了解到 goto 语句可用于一次退出所有嵌套循环。我还了解到它在 C 语言中并不是那么受欢迎。但是,我经常使用它,因为我认为它很有帮助,而且有时它比常见的替代品要容易得多。这是一个小程序,其中我使用 goto 语句来纠正用户的错误,而不是使用循环。
所以,我的问题是:我真的应该停止使用它吗?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    /*A program to store a number in 4 bits only !*/
    printf("Enter x then z :\n");
    int x, y;
    Start:
    scanf("%d %d", &x, &y);
    if((x > 15) || (y > 15) || (x < 0) || (y < 0))
    {
        printf("Wrong numbers! : 0<= x,y <=15\n");
        printf("Enter the numbers again : \n");
        goto Start;
    }
    char z;
    x<<= 4;
    z = x + y;
    printf("z = %d", z);
    return 0;
}

标签: cgoto

解决方案


goto仅当使用替代方案会使代码更丑陋时才应使用- 或者在某些极端情况下,性能更差

在您的情况下,您的代码可以写成

for (;;) {
    scanf("%d %d", &x, &y);
    if (x >= 0 && x <= 15 && y >= 0 && y <= 15)
        break;
    printf("Wrong numbers! : 0<= x,y <=15\n");
    printf("Enter the numbers again : \n");
}

如果没有goto,它也会更清楚,因为表达式现在定义了可接受的值而不是不可接受的值。


推荐阅读