C中的子表达式是什么?我认为较小的表达式的组合是子表达式
例如:a*(b+C/d)/20
b+c/d
是子表达式是否正确?
或单独c/d
是子表达式吗?
答案 0 :(得分:6)
子表达式不只是更大表达式的任何部分。
考虑:
2 * 3 + 4 * 5
此处3+4*5
不是子表达式。
完整表达式解析为
(2 * 3) + (4 * 5)
因此直接子表达式为2*3
和4*5
。
其中每一个都再次解析为较小的事物的组合,2*3
由子表达式2
和3
组成,而4*5
由子表达式组成表达式4
和5
。
这些子表达式的子表达式是原始完整表达式的间接子表达式,因此它总共包含以下子表达式:2*3
,4*5
,2
,3
,4
和5
。
虽然例如3+4*5
不是子表达式。
总之,子表达式是运算符或函数的参数,这样的参数表达式本身可以包含子表达式。
关于你的例子
a*(b+C/d)/20
和你的具体问题
b+c/d
是子表达式是否正确?或单独c/d
是子表达式吗?
是,是(模数大写/小写错字)。
但是,例如,此处b+C
不是子表达式。
答案 1 :(得分:4)
什么是c.i中的子表达式思想组合较小的表达式是子表达式
是。你认为是对的。
子表达式是表达式的一部分,它本身就是正确表达式。
有时子表达式是常量,例如20
。 /20
本身不是正确的表达式,因此它不能是子表达式
In general:
子表达式是表达式的一部分,该表达式对应于解析树中的子树 - 即,解析树中的某个节点及其所有后代。如果子表达式不是整个表达式,则它是一个正确的子表达式。
回答您的具体问题:
b + c / d是子表达式是否正确?
是。
或单独c / d是子表达式?
是。 a
,b
,C
,d
,20
,b+C/d
和a*(b+C/d)
都是子表达式。
答案 2 :(得分:4)
子表达式是表达式中任何较小的单位,因此 C/d
和 b+C/d
都是子表达式,
这里的单位是两个操作数和两个操作符的组合 示例,强>
C/d
是一个单位,(b+C/d)
是
请注意,在(b+C/d)
C/d
之后,(b+C/d)
将首先执行a*(b+C/d)
。
此外, /20
是一个子表达式。
并将 {{1}} 添加到表达式的其余部分将是完整表达式,因此它不会是子表达式。
换句话说,在表达式中,完整表达式中包含的所有较小的表达式都是子表达式,除了在最后执行的表达式(执行顺序取决于运算符的优先级)。
答案 3 :(得分:1)
表达式是一系列运算符和操作数 指定计算。表达式可以产生值并且可以 引起副作用。 [§5.1]
因此,b+c/d
和c/d
都是表达式。即使a
,b
,c
,d
和20
都是表达式。