我觉得我在这里区分子表达式和表达式有点困惑.
Compound expression - 涉及多个运算符的表达式.
例如 1 + 1 * 1
Expression - 具有一个或多个操作数的运算符.
例如1 + 1或+ 1
是否有一个低于表达式的级别,称为子表达式?
表达式可能没有运算符.例如,在以下内容中:
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是子表达式.
"复合"一词通常用于陈述,而不是表达.复合语句是一对可以包含一系列其他语句的大括号.例如,函数体几乎总是复合语句,许多循环体也是如此.
通常,复杂表达式只是简称为"表达式",它们的部分称为子表达式.
C++标准定义了整个章节中的表达式(如果我没记错的话,第5章).
C++标准没有定义复合表达式是什么
C++标准将a定义full expression为不是任何其他表达式的子表达式的表达式
例:
a + 4 + 5;
a + 4 + 5是一个完整的表达.该表达式既不a是4也不a + 4是表达式(尽管它们是(子)表达式),因为它是上述表达式的子表达式