===== Expression =====
An expression is a combination of literals, variables, operators and function calls that compute a single value.
Statements produce a single value when they are evaluated.
The process of executing an expression is called **evaluation**
When evaluating an expression, each of the terms in the expression is evaluated until a single value remains
In C++, expressions and declarations are often confused. Expressions are the building blocks of statements.
int x;
int y = { 5 + 8 };
In the example above, ''int x'' is an expression and when we add '';'' at the end, it becomes a declaration. Similarly, in the second line, ''5 + 8'' is an expression. ''int y = { 5 + 8 };'' is a statement.
Statements cannot be compiled on their own. They must necessarily be part of a statement. Of course, this is easy to solve. If we add '' ;'' to the end of any expression, we make an expression statement.
Based on this rule, we can turn any expression into a statement. However, compilers may give a warning if we turn unusable expressions into statements. For example, the following code will compile successfully. However, the calculated value is useless and will be discarded.
(5 + 8);
To help determine how expressions should be evaluated by the compiler and where they can be used;
All expressions in C++ have two properties: a type and a [[en:cpp:valuecategory|value category]].
The type of the expression is the type that remains after the expression has been evaluated. See the code below as an example.
auto v1 { 12 / 4 }; // int / int => The type of the expression is int since int returns int.
auto v2 { 12.0 / 4 }; // double / int => The type of the expression is double since it returns a double result.
Expressions [[en:cs:cpp:common:valuecategory|value categories]] is a little more complicated than the type. You can take a look at the related page.
----
Taken from [[en:cpp:common:expression|UCH Viki]].
https://wiki.ulascemh.com/doku.php?id=en:cs:cpp:common:expression