C中的子表达式是什么?

时间:2014-03-22 12:36:34

标签: c expression

C中的子表达式是什么?我认为较小的表达式的组合是子表达式 例如:a*(b+C/d)/20

b+c/d是子表达式是否正确?  或单独c/d是子表达式吗?

4 个答案:

答案 0 :(得分:6)

子表达式只是更大表达式的任何部分。

考虑:

2 * 3 + 4 * 5

此处3+4*5 不是子表达式。

完整表达式解析为

(2 * 3) + (4 * 5)

因此直接子表达式为2*34*5

其中每一个都再次解析为较小的事物的组合,2*3由子表达式23组成,而4*5由子表达式组成表达式45

这些子表达式的子表达式是原始完整表达式的间接子表达式,因此它总共包含以下子表达式:2*34*52345

虽然例如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是子表达式?

是。 abCd20b+C/da*(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/dc/d都是表达式。即使abcd20都是表达式。