# CSCD-2552015-01-12

## Expressions, Arithmetic and Logical

For arithmetic expressions involving multiplication, division, addition, and subtraction, all multiplications and division operations are performed before any addition or subtraction operations. In case several expressions of the same level are strung together, they are evaluated from left to right.

For instance, a / b / c is evaluated as ( a / b ) / c. This is really important for division and subtraction operations!

If you want a different grouping, just put expressions in parentheses.
y1 + x2 – x1  /  x3 – x1  *  y3 – y1  — generates a very different value from
y1 + (x2 – x1) / (x3 – x1) * (y3 – y1)
It will in fact be evaluated as
( ( ( ( y1 + x2 ) – ( x1  /  x3 ) )  – ( x1  *  y3 ) ) – y1

Arithmetic Expressions:
ExpressionDemo.txt    ExpressionDemo.c
InterpTest.txt    InterpTest.c

FULL table of operators and precedence — expanded beyond our book's Table 9.1:
Precedence.pdf

Logical Expressions

C has the convention that every variable can be treated as a logical value (true or false): if the variable contains a zero, it is false; if it contains a non-zero, it is true.

For a logical expression, if the expression is false its value is zero.  If it is true, its value is one.  In other words a logical expression is 0 or 1.

Comparison Expressions

C has six operators that compare two numerical fields:
>   strictly greater than
>=  greater than or equal
==  equal
!=  not equal
<=  less than or equal
<   strictly less than

>= is the exact opposite of <
<= is the exact opposite of >
!= is the exact opposite of ==

ComparisonDrill.txt    ComparisonDrill.c    ComparisonDrill.exe