# Assignment Operator in C

We have already used assignment operator while assigning a value to the variable. Let's discuss it here again in detail.

The assignment operator is used to assign a value to the variable. The operand on the left side of the of the assignment operator must be a variable and operand on the right-hand side can be a constant, variable or expression. Here are some examples:

```
x = 18 // right operand is a constant
y = x // right operand is a variable
z = 1 * 12 + x // right operand is an expression
```

We can also assign the same value to multiple variables at once.

`x = y = z = 100`

here `x`

, `y`

and z are initialized to `100`

.

**Note:** Expression like:

```
x = 18
y = x
z = 1 * 12 + x
```

are called ** assignment expression**. If we put a semicolon at the end of the expression like this:

```
x = 18;
y = x;
z = 1 * 12 + x;
```

then the assignment expression becomes assignment statement.

## Compound Assignment Operator

Assignment operations that use old value of a variable to compute its new value are called Compound Assignment. For example, the following statement adds `5`

to the existing value of `x`

.

```
x = 100
x = x + 5
```

Here first, the existing value of `x`

is added to `5`

, this value is then assigned back to `x`

. Now `x`

is `105`

.

It turns out that C provides some special operators for this kind of operations.

`x += 5`

is same as `x = x + 5`

but it is more concise and easy to type.

`+=`

is known as * Compound assignment operator*.

Similarly we have other Compound assignment operators:

Operator | Description |
---|---|

+= | x += 5 equivalent to x = x + 5 |

-= | y -= 5 equivalent to y = y - 5 |

/= | z /= 3 equivalent to z = z / 5 |

%= | m %= 10 equivalent to m = m % 10 |

The following program demonstrates Compound assignment operators.

```
#include<stdio.h>
int main(void)
{
char a = 'd';
printf("ASCII value of %c is %d\n", a, a); // print ASCII value of d
a += 10; // increment a by 10;
printf("ASCII value of %c is %d\n", a, a); // print ASCII value of n
return 0; // return 0 to operating system
}
```

**Expected Output:**

```
ASCII value of d is 100
ASCII value of n is 110
```