Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is a full expression in C?

I study C language from "C Primer Plus" book by Stephen Prata and it came to the point :

"A full expression is one that’s not a subexpression of a larger expression.Examples of full expressions include the expression in an expression statement and the expression serving as a test condition for a while loop"

I can't understand clearly what is the exact definition of full expressions and why the book considers test conditions are full expressions.

Could any one explain clearly what is meant by "Full Expression" and how can I specify that an expression is full expression or not ?

like image 399
Abd-Elrahman Mohamed Avatar asked Feb 20 '18 07:02

Abd-Elrahman Mohamed


2 Answers

Consider the statement below

a = b + c;

a = b + c is an expression which is not a subexpression of any larger expression. This is called full expression.
b + c is a subexpression of the larger expression a = b + c therefore it is not a full expression. b is also a subexpression for the full expression a = b + c and subexpression b + c.

like image 70
haccks Avatar answered Oct 04 '22 01:10

haccks


An operator along with its operands constitute a simple expression which is called the full expression.

A compound expression can be formed by using simpler expressions as operands of the different types of operators. The evaluation order of the operators in an expression will be determined by the operator precedence rules followed in the C language.

A sub-expression is not just any part of a larger expression.

Consider:

2 * 3 + 4 * 5

Here 3+4*5 is not a sub-expression.

The full expression parses as

(2 * 3) + (4 * 5)

and so the direct sub-expressions are 2*3 and 4*5.

Each of those again parse as compositions of smaller things, with 2*3 composed of the sub-expressions 2 and 3, and with 4*5 composed of the sub-expressions 4 and 5.

These sub-expressions of sub-expressions are indirect sub-expressions of the original full expression, so that in total it has these sub-expressions: 2*3, 4*5, 2, 3, 4 and 5.

While e.g. 3+4*5 is not a sub-expression.

like image 32
Usman Avatar answered Oct 04 '22 02:10

Usman