当前位置: C语言 -- 基础 -- 语句和块

语句和块(六)

3、break语句

break语句具有以下语法格式:

break;

其中breakC语言关键词。


break语句只能用于switch语句和迭代语句;break语句会终止最内层switch语句或者迭代语句的执行。


对于switch语句

switch(...)
{
  ...
  break; //break语句相当于goto here;。
  ...
}
here :
  ;

对于while语句

while(...)
{
  ...
  break; //break语句相当于goto here;。
  ...
}
here :
  ;

对于do语句

do
{
  ...
  break; //break语句相当于goto here;。
  ...
}while(...);
here :
  ;

对于for语句

for(...)
{
  ...
  break; //break语句相当于goto here;。
  ...
}
here :
  ;

对于嵌套的迭代语句

for(...)
{
  for(...)
  {
    ...
    break; //break语句相当于goto here;。
    ... 
  }
  here :
    ;
  ...
  break; //break语句相当于goto there;。
  ... 
}
there :
  ;

4、return语句

return语句具有以下语法格式:

return expressionopt ;

其中expression是可选的表达式;returnC语言关键词。


return语句会终止当前函数的执行,并将控制权返还给调用者。一个函数可以包含任意数量的return语句。

int func(int i)
{
    if(i!=0)
        return 1;
    else
        return 0;
}

如果执行包含表达式的return语句,则表达式值将作为函数调用表达式的返回值传递给调用者。如果表达式类型与函数返回类型不同,则表达式值将转换成函数返回类型值。

int func(double d)
{
    return d;
}
...
func(3.14); //函数返回值为3。

对于返回类型为void类型的函数,可以存在不包含表达式的return语句,也可以没有return语句;但不可以存在包含表达式的return语句。

void f1(void)
{

}

void f2(void)
{
    return;
}

void f3(void)
{
    return 0;   //非法。
}

return语句不是赋值操作。赋值操作的重叠限制(overlap restriction)不适用于函数返回的情况。浮点返回值的表示形式可能具有比返回类型更大的范围或者更高的精度;可以通过强制类型转换去除这些额外的范围和精度。



主要参考资料:

1、ISO/IEC 9899:2024

2、ISO/IEC 9899:2018

3、cppreference.net : switch statement