Anything that evaluates to a value is an expression in C++. An expression is said to return a value. Thus, 3+2; returns the value 5 and ...

Anything that evaluates to a value is an expression in C++. An expression is said to return a value. Thus,

`3+2;`returns the value`5`and so is an expression. All expressions are statements.The myriad pieces of code that qualify as expressions might surprise you. Here are three examples:

```
3.2 // returns the value 3.2
PI // float const that returns the value 3.14
SecondsPerMinute // int const that returns 60
```

Assuming that

`PI`is a constant equal to`3.14`and`SecondsPerMinute`is a constant equal to`60`, all three of these statements are expressions.The complicated expression

```
x = a + b;
```

not only adds

`a`and`b`and assigns the result to`x`, but returns the value of that assignment (the value of`x`) as well. Thus, this statement is also an expression. Because it is an expression, it can be on the right side of an assignment operator:```
y = x = a + b;
```

This line is evaluated in the following order: Add

`a`to`b`.Assign the result of the expression

`a + b`to`x`.Assign the result of the assignment expression

`x = a + b`to`y`.If

`a`,`b`,`x`, and`y`are all integers, and if`a`has the value`2`and`b`has the value`5`, both`x`and`y`will be assigned the value`7`.**Listing 4.1. Evaluating complex expressions.**

1: #include <iostream.h>

2: int main()

3: {

4: int a=0, b=0, x=0, y=35;

5: cout << "a: " << a << " b: " << b;

6: cout << " x: " << x << " y: " << y << endl;

7: a = 9;

8: b = 7;

9: y = x = a+b;

10: cout << "a: " << a << " b: " << b;

11: cout << " x: " << x << " y: " << y << endl;

12: return 0;

`13: }`

Output: a: 0 b: 0 x: 0 y: 35

a: 9 b: 7 x: 16 y: 16

**Analysis:**On line 4, the four variables are declared and initialized. Their values are printed on lines 5 and 6. On line 7,

`a`is assigned the value

`9`. One line 8,

`b`is assigned the value

`7`. On line 9, the values of

`a`and

`b`are summed and the result is assigned to

`x`. This expression (

`x = a+b`) evaluates to a value (the sum of

`a + b`), and that value is in turn assigned to

`y`.