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