## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

## Expressions and Operators

An expression is a combination of operators and operands. In the simplest case, an expression consists simply of a constant, a variable, or a function call. Expressions can also serve as operands, and can be joined together by operators into more complex expressions.

Every expression has a type and, if the type is not `void`, a value. Some examples of expressions follow:

```4 * 512                         // Type: int
printf("An example!\n")         // Type: int
1.0 + sin(x)                    // Type: double
srand((unsigned)time(NULL))     // Type: void
(int*)malloc(count*sizeof(int)) // Type: int *```

In expressions with more than one operator, the precedence of the operators determines the grouping of operands with operators. The arithmetic operators `*`, `/`, and `%`, for example, take precedence over `+` and `-`. In other words, the usual rules apply for the order of operations in arithmetic expressions. For example:

`4 + 6 * 512    // equivalent to 4 + (6 * 512)`

If a different grouping is desired, parentheses must be used:

`(4 + 6) * 512`

Table 1-8 lists the precedence of operators.

Table 1-8. Precedence of operators
 Priority Operator Grouping 1 `() [] -> .` left to right 2 `! ~ ++ -- + -` (`type`) `* & sizeof` right to left 3 `* / %` left to right 4 `+ -` left to right 5 `<< >>` left to right 6 `< <= > >=` left to right 7 `== !=` left to right 8 `&` left to right 9 `^` left to right 10 `|` left to right 11 `&&` left to right 12 `||` left to right 13 `?:` right to left 14 `= += -= *= ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required