lets define it first:

**++a** here first variable value increment by 1, then value is assigned.(pre increment)

**a++** here value of variable is assigned first, then increment by 1.(post increment)

eg: suppose, a = 5

++a = 1 + 5 = 6

a++ = 5 + 1 = 6

It seem to be same, right!

But Its actual difference can be seen in expression,

lets understand with some steps by taking an expression:

eg: a = 5

x = a++ + ++a

steps:

1) 1st evaluate all the pre Operation.

2) Place variable value.

3) Evaluate post Operation.

first, a = 1 + 5 = 6 (because of ++a in 2nd term, a value incremented to 6 from 5 by 1)

second, x = 6 + 6 = 12 (now a value is 6 which we assigned to x)

third, a = 6 + 1 = 7 (because of a++ in 1st term, a value increment to 7 from 6 by 1)

so, x=12 , a=7

Similarly it will happen with decrement operation,

**--a** here first variable value decrement by 1, then value is assigned.(pre decrement)

**a--** here value of variable is assigned first, then decrement by 1.(post decrement)

eg: a = 6

x = a++ + a--

first, no pre Operation.

Second, x = 6 + 6 = 12 (a value is assigned which is 6).

Third, a = 6 + 1 = 7( because of 1st term a++)

7 + (-1) = 6( because of 2nd term a--)

so, x=12 , a=6

eg: a = 6

x = ++a + a-- + --a - a++ + a++

first, a = 1 + 6 = 7

(-1) + 7 = 6

second, x = 6 + 6 + 6 - 6 + 6 = 18

third, a = 6 + (-1) = 5

5 + 1 = 6

6 + 1 = 7

so, x=18 , a=7

eg: a = 6

x = ++a + --a

first, a = 1 + 6 = 7

(-1) + 7 = 6

second, x = 6 + 6 = 12

third, no post operation.

so, x=12 , a=6

eg: given a = 5

find x, y, a

x = a++

y = ++a

x = 5 (first a value is assigned to x and later a will increment by 1, a = 5 + 1 = 6)

y = 1 + 6 = 7 (here first a value increment by 1 then value is assigned)

so, x=5 , y=7 , a=7

Hope you understand completely!

## Top comments (0)