复合表达与表达与子表达的比较

cpx*_*cpx 3 c++ expression

我觉得我在这里区分子表达式和表达式有点困惑.

Compound expression - 涉及多个运算符的表达式.

例如 1 + 1 * 1

Expression - 具有一个或多个操作数的运算符.

例如1 + 1+ 1

是否有一个低于表达式的级别,称为子表达式?

Jam*_*lis 9

表达式可能没有运算符.例如,在以下内容中:

int a = 0;
a;
Run Code Online (Sandbox Code Playgroud)

a是一种表达.引用C++标准,表达式是"指定计算的一系列运算符和操作数"(C++ 03 5/1).这里,a即使没有操作员,也是"操作数".


子表达式是任何表达式,它是较大表达式的一部分.所以,在

int a = 0, b = 0, c = 0, d = 0;
a * b + c * d;
Run Code Online (Sandbox Code Playgroud)

a * b并且c * d是子表达式.


"复合"一词通常用于陈述,而不是表达.复合语句是一对可以包含一系列其他语句的大括号.例如,函数体几乎总是复合语句,许多循环体也是如此.

通常,复杂表达式只是简称为"表达式",它们的部分称为子表达式.


Arm*_*yan 6

  • C++标准定义了整个章节中的表达式(如果我没记错的话,第5章).

  • C++标准没有定义复合表达式是什么

  • C++标准将a定义full expression为不是任何其他表达式的子表达式的表达式

例:

a + 4 + 5;

a + 4 + 5是一个完整的表达.该表达式既不a4也不a + 4是表达式(尽管它们是(子)表达式),因为它是上述表达式的子表达式