我听说,如果表达式后接分号,则将其视为表达式语句。
来源: http://farside.ph.utexas.edu/teaching/329/lectures/node11.html
int x = 7;
x = 8;
x++;
x—-;
x = x << 1;
这些都是表达式语句。
但这也是表达式语句吗?
return 5;
如果不是,那么请彻底解释原因。
如果您能确定返回满足感是否也可以视为其他语言中的表达式语句,我也将不胜感激。
答案 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}}。