Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Term Entry] C Operators: Unary operators #6093

Merged
merged 4 commits into from
Feb 6, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions content/c/concepts/operators/terms/unary-operators/unary-operators.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
Title: 'Unary operators'
Description: 'Perform operations on a single operand.'
Subjects:
- 'Code Foundations'
- 'Computer Science'
Tags:
- 'Arithmetic'
- 'Comparison'
- 'Logical'
- 'Operators'
- 'Unary'
CatalogContent:
- 'learn-c'
- 'paths/computer-science'
---

**Unary operators** in C operate on a single operand to perform various operations such as incrementing, decrementing, negating, or manipulating bits. They are frequently used for modifying values, checking conditions, and optimizing calculations in expressions.

## Syntax

```pseudo
operator operand;
```

- `operator`: A unary operator that performs an operation on a single operand.
- `operand`: The variable or value on which the operator acts.

> **Note:** In postfix notation, the operator is placed after the operand, and the original value is used before the operation takes effect.

## Types of Unary operators

### Increment (`++`)

Increases the value of the operand by 1. Can be used in prefix (`++x`) or postfix (`x++`) notation.

### Decrement (`--`)

Decreases the value of the operand by 1. Can be used in prefix (`--x`) or postfix (`x--`) notation.

### Unary Plus (`+`)

Indicates a positive value. Rarely used explicitly, as numbers are positive by default.

### Unary Minus (`-`)

Negates the value of the operand.

### Logical NOT (`!`)

Reverses the truth value of the operand. If the operand is nonzero, it returns `0`; otherwise, it returns `1`.

### Bitwise NOT (`~`)

Inverts all bits of the operand.

### Indirection (`*`)

Accesses the value stored at a memory address (used with pointers).

### Addressof (`&`)

Retrieves the memory address of a variable.

### Sizeof (`sizeof()`)

Determines the size (in bytes) of a variable or data type.

## Example

In this example, various unary operators are demonstrated, such as negation, increment, decrement, bitwise operations, and the sizeof operator to show their effects on integer values:
avdhoottt marked this conversation as resolved.
Show resolved Hide resolved

```c
#include <stdio.h>

int main() {
int a = 5;
int b = -a; // Unary minus
int c = !a; // Logical NOT
int d = ~a; // Bitwise NOT
int e = ++a; // Pre-increment
int f = a--; // Post-decrement
int size = sizeof(a); // Sizeof operator

printf("Unary minus: %d\n", b);
printf("Logical NOT: %d\n", c);
printf("Bitwise NOT: %d\n", d);
printf("Pre-increment: %d\n", e);
printf("Post-decrement: %d\n", f);
printf("Sizeof operator: %d\n", size);

return 0;
}
avdhoottt marked this conversation as resolved.
Show resolved Hide resolved
```

The code produces the output as:

```shell
Unary minus: -5
Logical NOT: 0
Bitwise NOT: -6
Pre-increment: 6
Post-decrement: 6
Sizeof operator: 4
```