break , continue , goto , return 跳转语句
break 语句只能在switch语句和循环语句中,用来跳出switch语句或提前终止循环,转去执行switch 语句或者循环语句之后的语句
只能跳出当前循环执行后续语句
continue 语句只能在循环语句中用来终止本次循环
在for表达式中跳到第二个表达式
int main()
{
int n = 10;
for (int i = 0; i < n; i++)
{
if (i % 2 == 0)
{
continue; // 直接跳到i++ ,不执行本次循环的后续语句
}
printf("%d\n", i);
}
return 0;
}
在for循环内套一个switch , break后跳出switch但不影响前面的for循环。如果想要跳出for循环,一种方法是将for循环写在函数内,然后return
而for循环中嵌套switch, 用continue时会直接跳到 i++ ,而不执行switch后续语句
在while ,do{} while 中使用continue ,很容易死循环,要非常小心
while (i < n)
{
if (i % 2 == 0)
{
continue;// 会直接跳到while的判断,而不执行i++,因此会死循环
}
i++;
}
do
{
if (i % 2 == 0)
{
continue; // 直接跳到while判断而不进行i++
}
i++;
}while(i < n)
goto 语句: 无条件转移语句
goto 语句和标号语句一起使用,标号语句就是用标识符标识的语句,他控制程序从goto 语句所在的地方转移到标号语句处。
goto语句最重要的价值是在多层嵌套循环中,要从最里的循环跳出所有循环,goto语句就发挥大作用了
goto语句要从循环里向循环外跳,而不允许从循环外向循环里跳
goto尽可能向下跳,而不要向上跳
goto不能跨函数跳,不能再主函数使用跳到其他函数
int main()
{
int i = 0, j = 0, k = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
for (k = 0; k < 10; k++)
{
if (i + j + k == 10)
{
goto input; //直接跳到下面的input
}
}
}
}
input:
}
return 语句用于结束函数的执行返回调用者,如果只是主函数,则返回至操作系统
return 可以在函数的任何位置放,只要他放到了这,那他之后的语句就不再执行了
int Add_int(int a, int b)
{
int c = a + b;
return c; // 因为上面的函数返回类型是整型所以返回一个整型
}
如果函数的值是无类型
void fun(int a)
{
int x = a + 10;
printf("x = %d\n", x);
return; // 可以不写也可以写,但写了只能写return ,而不能带返回值
}
而exit 不同,只要存在exit 程序就终止,不论是主函数还是其他函数
void fun()
{
exit(EXIT_FAILURE); // 出现了exit程序结束
return;
}
a = 10;
printf(" %5d ",a); 右对齐
printf(" %-5d " ,a); 左对齐