# Expressions with Unary Operators

The latest version of this topic can be found at Expressions with Unary Operators.

Unary operators act on only one operand in an expression. The unary operators are as follows:

These operators have right-to-left associativity. Unary expressions generally involve syntax that precedes a postfix or primary expression.

The following are the possible forms of unary expressions.

*postfix-expression*`++`

*unary-expression*`––`

*unary-expression**unary-operator**cast-expression*`sizeof`

*unary-expression*`sizeof(`

*type-name*`)`

`decltype(`

*expression*`)`

*allocation-expression**deallocation-expression*

Any *postfix-expression* is considered a *unary-expression*, and because any primary expression is considered a *postfix-expression*, any primary expressions is considered a *unary-expression* also. For more information, see Postfix Expressions and Primary Expressions.

A *unary-operator* consists of one or more of the following symbols: `* &``+``–``!``~`

The *cast-expression* is a unary expression with an optional cast to change the type. For more information see Cast Operator: ().

An *expression* can be any expression. For more information, see Expressions.

The *allocation-expression* refers to the `new`

operator. The *deallocation-expression* refers to the `delete`

operator. For more information, see the links earlier in this topic.