c++ 跳转语句 break语句 continue语句 goto语句

跳转语句

跳转语句就是用来直接跳转到任意位置执行代码的语句,其在底层的实现就是通过使用跳转指令来完成的。


break语句

brea语句是用来跳出switch或者循环体结构的语句。循环语句中的break用法与switch类似,可以直接忽视条件判断而直接跳出循环。

break在for循环中的用法

#include<iostream>
using namespace std;

//break语句

int main()
{
    
    
	for ( int i=0;i<10;i++)
	{
    
    
		cout << i << endl;
		if (i>5) break;
	}
	cout << "循环结束!" << endl;
	return 0 ;
}


运行结果为:
在这里插入图片描述
可以看出,当 i=6,的时候,break会直接跳出循环,而没有继续与10比较。

break语句对所有循环语句和switch语句都有效,但是对if语句没有作用。

#include<iostream>
using namespace std;

//if语句中的break语句

int main()
{
    
    
	for ( int i = 0 ;i < 10 ; i++ )
	{
    
    
		cout << i << endl;
		if (i>5)
		{
    
    
			break;
		}
		cout << "在if语句外!" << endl;
	}
	cout << "跳出循环!" <<endl;
	return 0 ;
}

运行结果:
在这里插入图片描述
在示例中,我们可以看到第七次循环中 i > 5 的条件成立,break语句并没有让程序调到 if语句外,打印“在if语句外”,而是直接跳到了循环的外面。


continue语句

break语句解决了提早结束循环的问题,但有时我们只想结束当前一轮的循环,而依然让循环继续下去,这时使用continue语句就可以解决这一问题了。continue语句不会直接调到整个循环的后面,而是跳回至条件判断,这样当前一轮循环剩余的代码不会执行,而新一轮的循环依旧可以继续进行。

continue语句

#include <iostream>
using namespace std;

//continue 语句

int main()
{
    
    
	for (int i = 0 ;i<10;i++)
	{
    
    
		if ( i % 2 ==0 )
		{
    
    
			continue;
		}
		cout << i <<endl;
	}
	return 0;
}

运行结果:

示例再循环中每次碰到 i能被2 整除余0,也就是 i 偶数的情况时,就用continue跳过本次循环的后续代码,进入下一次循环,这样就只有奇数会被打印出来了。


goto语句

goto语句可以使程序跳转到任意一个用标签(Label)标记过的语句。

goto语句

#include <iostream>
using namespace std;

//goto语句

int main()
{
    
    
	goto here ;
	cout << "本应该输出这句。" << endl;
here:
	cout << "现在打印这句。" <<  endl;
	return 0;
}

运行结果:
在这里插入图片描述
示例中的第一个输出语句被跳过了,程序通过goto直接跳转到here,并只打印了第二个输出语句。

再试一下用两个goto语句实现while循环的示例

使用goto语句实现while循环

#include <iostream>
using namespace std;

//使用goto语句实现while循环

int main()
{
    
    
	int i =0;
loophead:
	if ( i >= 10 )
		goto loopend;
	cout << i << endl;
	i++;
	goto loophead;
loopend:
	return 0;
}

运行结果为:
在这里插入图片描述
这个示例的行为与while循环几乎一模一样,但是看起来却要难读很多。loophead标志着循环的开始,如果计数器 i大于等于10 ,那么循环结束,goto将会跳转到标志着循环尾部的loopend;如果计数器小于10,循环将会正常进行,并在最后自动跳转到loophead.

如果对你有帮助请点赞支持一下下~

猜你喜欢

转载自blog.csdn.net/m0_62870588/article/details/123688308