goto语句的本质

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
void main1(){
	//continue用于选出所有满足条件的,只能用于循环,可以跳出本次执行,继续本轮循环的下一次循环
	//break 用于选出一个满足条件的,只能用于循环和switch,可以跳出本轮循环,继续本轮循环后面的语句
	//goto可以跳出多层嵌套循环,for,while,dowhile本质是用goto语句实现的,goto语句比较底层

	//语句标号是语句前面的标识符,不能是整数,标识符不是变量,不能打印
	goto A2;  //goto可以跳过A1
A1: printf("hello world");  //A1即是语句标识符
A2: printf("hello world");
	getchar();
}
void main2(){
A1: printf("hello world");  //A1即是语句标识符
A2: printf("hello world");
	goto A2;  //goto形成死循环
	getchar();
}


//goto与if配合形成循环
void main3(){

	int i = 1;
A1:if (i < 10){  //循环条件
	printf("\n%d", i);  //A1即是语句标识符
	i++;
	goto A1;  //goto形成循环
}
   getchar();
}

///用goto实现三种循环
void main4(){
	//输出1-10中不被3整除的数
	for (int i = 1; i <= 10; i++){
		if (i % 3 == 0){
			continue;
		}
		printf("%d\n", i);
	}
	//用goto改写
	int j=0;
A1:if (j <10){
		j++;
		if (j % 3 == 0){
		
			goto A1;
		}
		printf("%d\n", j);
		goto A1;
	}
	getchar();
}

void main(){
	//输出1-10中第一个能被3整除的数
	for (int i = 1; i <= 10; i++){
		if (i % 3 == 0){
			printf("%d\n", i);
			break;
		}
	}
	//用goto改写
	int j = 0;
A1:if (j <10){
	j++;
	if (j % 3 == 0){
		printf("%d\n", j);
		goto A2;
	}
	goto A1;
}
  A2:getchar();
}

猜你喜欢

转载自www.cnblogs.com/luoxuw/p/11257788.html
今日推荐