# Unary operation

This article needs additional citations for verification. (March 2010) (Learn how and when to remove this template message) |

In mathematics, a **unary operation** is an operation with only one operand, i.e. a single input. This is in contrast to binary operations, which use two operands. An example is the function *f* : *A* → *A*, where *A* is a set. The function *f* is a unary operation on *A*.

Common notations are prefix notation (e.g. +, −, ¬), postfix notation (e.g. factorial n!), functional notation (e.g. sin *x* or sin(*x*)), and superscripts (e.g. transpose *A*^{T}). Other notations exist as well. For example, in the case of the square root, a horizontal bar extending the square root sign over the argument can indicate the extent of the argument.

## Contents

## Examples[edit]

### Unary negative and positive[edit]

As unary operations have only one operand they are evaluated before other operations containing them. Here is an example using negation:

- 3 − −2

Here, the first '−' represents the binary subtraction operation, while the second '−' represents the unary negation of the 2 (or '−2' could be taken to mean the integer −2). Therefore, the expression is equal to:

- 3 − (−2) = 5

Technically there is also a unary positive but it is not needed since we assume a value to be positive:

- (+2) = 2

Unary positive does not change the sign of a negative operation:

- (+(−2)) = (−2)

In this case a unary negative is needed to change the sign:

- (−(−2)) = (+2)

### Trigonometry[edit]

In trigonometry the functions , , , and the other trigonometric functions are unary operations. This is because it is possible to input only one term with the operation and retrieve a result, compared with operations, such as addition, where two different terms are needed to compute a result.

### Examples from programming languages[edit]

#### C family of languages[edit]

In the C family of languages, the following operators are unary:^{[1]}^{[2]}

- Increment:
`++x`

,`x++`

- Decrement:
`−−x`

,`x−−`

- Address:
`&x`

- Indirection:
`*x`

- Positive:
`+x`

- Negative:
`−x`

- Ones' complement:
`~x`

- Logical negation:
`!x`

- Sizeof:
`sizeof x, sizeof(type-name)`

- Cast:
`(`

*type-name*)*cast-expression*

#### Unix Shell (Bash)[edit]

In the Unix/Linux shell (bash/sh), '**$'** is a unary operator when used for parameter expansion, replacing the name of a variable by its (sometimes modified) value. For example:

- Simple expansion:
`$x`

- Complex expansion:
`${#x}`

#### Windows PowerShell[edit]

- Increment:
`++$x`

,`$x++`

- Decrement:
`−−$x`

,`$x−−`

- Positive:
`+$x`

- Negative:
`−$x`

- Logical negation:
`-not $x`

- Invoke in current scope:
`.$x`

- Invoke in new scope:
`&$x`

- Cast:
`[`

*type-name*]*cast-expression* - Cast:
`+$x`

- Array:
`,$array`

## See also[edit]

## References[edit]

**^**"Chapter 5. Expressions and Operators".*C/C++ Language Reference*.*www-01.ibm.com*. Version 6.0. p. 109. Archived from the original on 2012-10-16.**^**"Unary Operators - C Tutorials - Sanfoundry".*www.sanfoundry.com*.

- Matt Insall. "Unary Operation".
*MathWorld*.