小白的编程经验(跳转语句)

除了分支语句和循环语句,还有一类语句也能改变程序的执行顺序,它就是跳转语句。
常见的跳转语句有四种:

  1. break 语句
  2. continue 语句
  3. return 语句
  4. goto 语句

分别介绍一下它们吧:

1)break语句

一般 break 语句使用在循环语句和switch语句中,break 翻译过来就是打破,在循环中可以理解为打破循环,用于结束循环和switch。

举个例子:
for(int i=0;i<10;i++)
{
	if(i == 5)
	{
		break;
	}
	printf("%d",i);
}

执行结果:01234
这是一个简单的循环,忽略break语句的话,它应该输出的是0123456789。但是当 i 等于5时,执行break语句。 break 语句打破了循环,直接退出了循环。

2) continue 语句

一般continue 语句多用于循环语句中,continue 翻译过来就是继续,用于结束本次循环但还要继续循环,下一次循环还是会判断循环条件。

举个例子:
for(int i=0;i<10;i++)
{
	if(i == 5)
	{
		continue;
	}
	printf("%d",i);
}

执行结果:012346789
忽略break语句的话,它应该输出的是0123456789。加上 continue 语句后少了一个输出 5。当 i 等于 5 时,执行continue语句,跳出本次循环,在循环结束后 i++,i 的值变为 6 ,i 满足小于10的条件,继续循环。

关于 continue 语句,昨天还遇到一个坑:

int i = 0;
while(i<10)
{
	if(i == 5)
	{
		continue;
	}
	printf("%d",i);
	i++;
}

执行结果:01234[…] (不输出任何信息,但是程序还没结束)
很多人可能会以为这个代码和上面那个代码的执行结果相同,但事实上这个代码是一个死循环。当满足 i 等于 5 的时候,直接跳出本次循环,但是循环变量 i 的值并没有发生改变,也就是说下一次进入循环是的 i 的值依旧是 5 ,下下次也是如此,进入了一个死循环。
注意:因此使用 continue 语句时要注意循环变量的变化。

3) return 语句

return 语句多用于函数的结束, 会返回一个数据给函数的调用者,并立即结束函数的执行。由于 return 语句可以从一个函数跳转另一个函数中,因此也算到跳转语句中。

举个例子:
int main()
{
	int i = 0;
	printf("1");
	if(i == 0)
	{
		return 0;
	}	
	printf("2");
	return 0;
}

输出结果为 1
因为 if 满足条件直接执行return语句,返回了一个 0 给调用者,并且结束了main函数,后面的 2 就打印不出来了。
注意:return 后面跟着的返回值类型是由函数的返回值类型决定的,比如这里 return 0,0是一个整数,因为int main 定义了返回值为 int 类型。

4)goto语句

goto 语句可以在函数内任意跳转,只能是函数内,不能跳转到其他函数中。

使用方式

标签名:

goto 标签名;


举个例子:
int main()
{
       printf("1");
loop1:
       printf("2");
       goto loop1;
       printf("3");
}

执行结果是:122222222222…(一直是2)

在第一个 printf() 后面定义一个标签 loop1 ,在第二个 printf() 后面执行了 goto 语句,跳转到 loop1 标签处继续向下运行,打印 2 后继续执行 goto 语句 跳转到 loop1,相当于一个死循环。

既然 goto 语句可以实现死循环的功能,那么改变跳转的条件就可以变成一个循环使用。

举个例子:
int main()
{
      int i=0;
loop1:
       printf("%d",i);
       i++;
       if(i<10)
       {
 	      	goto loop1;
 	   }
}

执行结果是:123456789

当满足 if 条件中 i 小于10时,goto语句跳转到 loop1处,执行 10 次 。

通过goto语句可以解决一些奇奇怪怪的题目,比如:不使用循环语句计算N的阶乘

#include<stdio.h>

int main(int argc,const char* argv[])
{
      int sum = 1;
      int n = 0;
      printf("请输入一个数:");
      scanf("%d",&n);
loop1:
      sum *= n;
      n--;
      if(n)
      {   
           goto loop1;
      }   
      printf("%d\n",sum);
}

结语

希望这篇文章对你有所帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值