c - 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;
}
解决方案
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
,它也会更清楚,因为表达式现在定义了可接受的值而不是不可接受的值。
推荐阅读
- php - 如何限制用户访问 Wordpress 中的自定义帖子类型?
- python - 由于 GMP 版本不兼容,scikit-geometry 不起作用
- python - VerticaPy kmeans 无需访问公共模式即可适用
- sql - 计算最后一天和公司同一分支机构的价值
- xml - Flutter - 基于 XML 文件的动态页面设计(通过 REST API)
- javascript - 在 Openlayers 6 中移动一个点
- javascript - 如何导出电子邮件模板并使用 react-email-editor 传递道具?
- asp.net - ASP.NET 论坛应用:获得点赞最多的答案
- reactjs - 从useState反应setState函数不更新状态值
- c++ - 求解函数在以下程序中不起作用