Skip to content

LV070-辅助控制语句

一、return

1. 基本形式

c
return (表达式); /* 有没有 ( ) 都可以*/

2. 基本应用

  • 返回函数的值:当 return 应用在函数中时,可以用于返回一个值,如 return (10 + 9);

  • 结束程序:当 return 应用在函数中时,不仅可以用于返回一个值,还可以直接结束该函数, return 语句执行完毕,它后边的所有语句不再执行,直接跳到主函数继续执行,若是用在主函数中,则遇到 return 直接结束主函数,整个程序结束,后边的语句不再执行。

【注意】 return 语句 可以有多个,可以出现在函数体的 任意位置,但是每次调用函数 只能有一个 return 语句被执行,所以只有一个返回值(少数的编程语言支持多个返回值,例如 Go 语言)。

二、goto

goto 语句是一种无条件流程跳转语句,通常 goto 语句与 if 语句结合使用,当满足一定条件时,程序流程跳转到指定标号处,接着往下执行。

1. 基本形式

c
/* 定义一个语句标识 flag_name (flag_name 只是一个名字)*/
flag_name :      /* 语句标识后的冒号不能省略 */
	语句块...;
	
/* goto 语句的调用 */
goto flag_name;  /* 程序将从对应 flag_name 的代码处开始往下执行。 */

【注意】 flag_name 后边的语句可以加 { } ,也可以不加。不过加上的话可读性会强一些。

2. 使用实例

2.1 跳出循环

c
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
    int count = 0;
    flag:
    {
        printf("------goto statement execution------\n");
        printf("------cycle end------\n");
        printf("count = %d\n", count);
        if (count == 3)
            return 0;
    }
    printf("------while cycle start------\n");
    while(1)
    {
        printf("Before statement execution: count=%d\n", count);
        count++;
        printf("After statement execution: count=%d\n", count);
        sleep(1);
        if(count >= 3)
            goto flag;
    }
    return 0;
}

image-20260209112238875

goto flag_name; 语句放在循环中用于跳出循环,用于结束循环时,此时 flag_name 处的代码有两种情况:

(1)第一种是放在循环上边,比循环先执行,这个时候, flag_name 处的程序会先执行一遍,所以,切记,这里边不要直接放 return 语句或者可以执行到 return 的语句,否则程序直接结束了,有需要的话可以加一个判断,以保证程序可以正常运行。

(2)第二种是放在循环下边,这个时候,只有满足了跳转指令时,程序才会跳转到 flag_name 处执行。

2.2 构成循环

c
#include <stdio.h>
int main(int argc, char *argv[])
{
    int i = 1;
    int sum=0;
    flag: 
    	if(i <= 5)
        {
            sum = sum + i;
            i++;
            goto flag;
        }
    printf("%d\n",sum);
    return 0;
}

三、break

1. 基本形式

c
break;

break 语句通常用在循环语句和开关语句中。当 break 用于开关语句 switch 中时,可使程序跳出 switch 而执行 switch 以后的语句;如果没有 break 语句,则将成为一个死循环而无法退出。

当 break 语句用于 do-while、for、while 循环语句中时,可使程序终止循环而执行循环后面的语句,通常 break 语句总是与 if 语句联在一起,即满足条件时便跳出循环。

2. 跳出循环实例

c
#include <stdio.h>
int main(int argc, char *argv[])
{
    int n,i;
    printf("自数1~100全部素数:\n");
    for(n = 2; n <= 100; n++)
    {
        for(i = 2; i < n; i++)
        {
            if (n % i == 0)
                break;
        }
        if(i >= n)
        	printf("%d\t",n);
    }
    printf("\n");
    return 0;
}

image-20260209112513417

注意

(1) break 语句对 if-else 的条件语句不起作用;

(2)在多层循环中,一个 break 语句 只向外跳一层

四、continue

1. 基本形式

c
continue;

continue 语句的作用是跳过循环体中剩余的语句而 强行执行下一次循环。 continue 语句只用在 for、while、do-while 等循环体中,常与 if 条件语句一起使用,用来 加速循环

2. 基本应用

下面的示例是直接跳过剩余语句执行下一次循环

c
#include <stdio.h>
int main(int argc, char *argv[])
{
    int n;
    for(n = 1; n <= 30; n++)
    {
        if(n % 10 == 0)
            printf("\n");
        if(n % 2 == 0)
            continue;
        printf("%d\t", n);
    }
    printf("\n");
    return 0;
}

image-20260209113130617