是否在C语言中将return语句视为表达式语句?

时间:2019-07-18 14:06:33

标签: c expression

我听说,如果表达式后接分号,则将其视为表达式语句。

来源: http://farside.ph.utexas.edu/teaching/329/lectures/node11.html

int x = 7;
x = 8;
x++;
x—-;
x = x << 1;

这些都是表达式语句。

但这也是表达式语句吗?

return 5;

如果不是,那么请彻底解释原因。

如果您能确定返回满足感是否也可以视为其他语言中的表达式语句,我也将不胜感激。

3 个答案:

答案 0 :(得分:5)

return语句和表达式语句是两回事。

C standard的6.8.3节给出了表达式语句的语法:

  

表达声明:

     
      
  • 表达式 opt ;
  •   

第6.8.6节给出了return语句的语法:

  

跳转声明:

     
      
  • goto标识符;
  •   
  • continue;
  •   
  • break;
  •   
  • return表达式 opt ;
  •   

此外,这也不是表达式语句(实际上根本不是语句):

int x = 7;

声明

答案 1 :(得分:4)

这基本上由Expression Versus Statement回答。关键问题是:return是否求值(例如,您可以做x = return 5;吗?)。显然,它不是,所以它是语句,而不是表达式。表达式语句只是用作语句的表达式。如果它不是表达式,则不能是表达式语句,因此return不会形成表达式语句。

答案 2 :(得分:3)

不。 Expression statements是(可选)表达式,后跟;

return 5不是表达式。那是因为它不会求值(您不能将return 5赋给任何值),并且因为它被专门定义为jump statement,它是statement的一种,不同于{ {3}}。