在c语言中可以用goto来处理错误,但是要特别注意的是goto会顺序执行下去,所以在goto中如果没有分支或retun的话可能会出错
#include<stdio.h>
//冒泡排序,把数组中的元素从大到小或从小到大列出
int main(void)
{
int arr[10]={8, 1, 6, 7, 5, 0, 3, 2, 4, 9};
int i, j, temp, count = 0;
goto out;
//goto out2;
out1:
for(i = 0; i<9; i++) //控制排序的趟数
{
for(j=0; j<9-i; j++)
{
if(arr[j] > arr[j+1]) //控制相比较的数
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(i = 0; i<10; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
count++;
if (count == 10)
//break;
return 0;
goto out1;
out:
printf("out\n");
//return 0;
out2:
printf("out2\n");
return 0;
}
**比如在上面的代码中如果out中没有return的话会顺序执行到out2
而且中间部分的代码不会被执行,goto out 后会直接顺序执行然后返回结束程序**
//goto out;
**如果我们注掉goto out 程序会在goto out1形成这部分代码形成循环知道条件满足退出,但是在goto中不能使用break 和 conution**