文章目录
1 标号语句与跳转语句
1.1 标号语句
从标号语句语法图可以看到,标号语句分为3种:(goto)标号语句、(default)标号语句、(case)标号语句。
我们常说的标号语句一般就是指:(goto)标号语句,(default)标号语句和(case)标号语句需要配合switch语句一起使用。
一般情况下,语句默认为1条。
1.2 跳转语句
跳转语句分为4种:goto、continue、break、return。
2 goto标号语句与goto跳转语句
int main (void)
{
int x = 10;
A : x = x + 100; //(goto)标号语句
X = X +100;
goto A ; //(goto)跳转语句
}
(goto)标号语句、(goto)跳转语句之间的关系:它们是需要配合在一起来使用的。
(goto)标号语句本身并不会影响代码的执行效果,它仅仅用于标识一个跳转目标。
(goto)跳转语句会使处理器跳转至指定(goto)标号语句位置处执行,然后继续向下执行。
2.1 goto标号语句
格式:
- 标识符 : 语句
- A : x = x + 100;
- 这里的标识符,我们也称之为标号名
(对于:int A = 20; 这里的标识符,我们也称之为变量名。)
标号名是唯一具有函数作用域的标识符。
如果标号名的后面只能以声明开始,怎么办?
我们可以在标号名的后面跟上一个空语句来解决这个尴尬。
int main (void)
{
goto A ; //(goto)跳转语句
int x = 100;
x = x + 100;
//A : int y = 100; //(goto)标号语句
A : ; //(goto)标号语句
int y = 100;
y = y + 100;
}
标号语句的书写格式:
// --> 1.
A : x = x + 100;
// --> 2.
A :
x = x + 100;
// --> 3.
A :
x = x + 100;
y = y + 100; //请指出哪部分是(goto)标号语句 A: x = x + 100;
// --> 4.
A :
B :
x = x + 100; //这段代码总共有几条语句? 3条
// 1. x = x +100; 这是一条普通语句
// 2. B: x = x + 100; 这是一条标号语句
// 3. A: B: x = x + 100; 这是一条嵌套的标号语句,标号后的语句也是标号语句
2.2 goto跳转语句
格式:
- goto 标识符 ;
- 这里的标识符必须是一个标号名。
3 continue语句
continue语句只能用于迭代语句的循环体中。
3.1 continue语句的执行效果
continue语句的执行效果:跳转到当前循环体的末尾,继续往下执行。
3.2 实例分析
#include <stdio.h>
int main(void)
{
int a = 100;
while (a)
{
continue;
printf("123456");
a--;
}
}
#include <stdio.h>
int main(void)
{
int a = 100;
do
{
continue;
printf("123456");
a--;
}
while (a);
}
4 break跳转语句
break语句只能用于switch语句、迭代语句的子语句中。
4.1 break语句执行效果
break语句的执行效果:跳转到switch语句、迭代语句的后面,继续往下执行。
4.2 实例分析
#include <stdio.h>
int main(void)
{
int a = 100;
while (a)
{
break;
printf("123456");
a--;
}
}
#include <stdio.h>
int main(void)
{
int a = 100;
do
{
break;
printf("123456");
a--;
}
while (a);
}
5 return跳转语句
return语句只能用于函数体内。
5.1 return语句的执行效果
return语句的执行效果:跳转到函数体的后面,然后继续向下执行。
如果函数的返回类型是void --> return ;
如果函数的返回类型是其它类型 :
- return 表达式 ;
- 表达式值的类型 和 返回类型 必须是兼容类型。
5.2 实例分析
void A (void)
{
return;
}
int main(void)
{
A();
return 0;
}