c 中的表达式和表达式语句是什么?

新手上路,请多包涵

我读过 C++ 中的语句通常以分号结尾;所以这可能有助于解释表达式语句是什么。但是,通过举个例子,你会怎么称呼表达式呢?

在这种情况下,两者都只是语句或表达式语句或表达式吗?

 int x;
x = 0;

原文由 user942451 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 660
2 个回答

表达式 是“指定计算的一系列运算符和操作数”(这是 C++ 标准中给出的定义)。例如 422 + 2"hello, world"func("argument") 。赋值是 C++ 中的表达式;函数调用也是如此。

我没有看到术语“语句”的定义,但基本上它是一段执行某些操作的代码。示例是复合语句(由 {} 中包含的零个或多个其他语句组成)、if 语句、goto 语句、return 语句和 _表达式语句_。 (在 C++ 中,但不是在 C 中,声明被归类为语句。)

术语 语句表达式 由语言语法非常精确地定义。

表达式语句 是一种特殊的语句。它由一个可选的表达式和一个分号组成。计算表达式并丢弃任何结果。通常这在语句有副作用时使用(否则没有多大意义),但你可以有一个表达式语句,其中表达式没有副作用。例子是:

 x = 42; // the expression happens to be an assignment

func("argument");

42; // no side effects, allowed but not useful

; // a null statement

null 语句是一种特殊情况。 (我不确定为什么要这样对待它;在我看来,将其作为一种不明确的陈述会更有意义。但这就是标准定义它的方式。)

注意

return 42;

是一个语句,但它 不是 一个表达式语句。它包含一个表达式,但该表达式(加上 ; )并不构成整个语句。

原文由 Keith Thompson 发布,翻译遵循 CC BY-SA 3.0 许可协议

表达式 是“指定计算的一系列运算符和操作数”

这些是表达式:

 1

2 + 2

"hi"

cout << "Hello, World!"

最后一个确实是一个表达式; << is the output operator, cout (of type ostream ) and "Hello, World!" (string literals) are the operands.运算符返回左边的操作数,所以 (cout << "Hello, ") << "World!" 也是一个有效的表达式,但也不是一个语句。

当一个表达式后面跟一个分号时,它就变成了一个 表达式语句

 1;

2 + 2;

"hi";

cout << "Hello, World!";

原文由 Adola 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏