**1)** Precedence of prefix ++ and * is same. Associativity of both is right to left.

**2)** Precedence of postfix ++ is higher than both * and prefix ++. Associativity of postfix ++ is left to right.

The expression **++*p** has two operators of same precedence, so compiler looks for assoiativity. Associativity of operators is right to left. Therefore the expression is treated as * ++(*p)*. Therefore the output of first program is “

*arr[0] = 10, arr[1] = 20, *p = 11*“.

The expression ***p++** is treated as* *(p++) *as the precedence of postfix ++ is higher than *. Therefore the output of second program is “

*arr[0] = 10, arr[1] = 20, *p = 20*“.

The expression ***++p** has two operators of same precedence, so compiler looks for assoiativity. Associativity of operators is right to left. Therefore the expression is treated as * *(++p)*. Therefore the output of third program is “

*arr[0] = 10, arr[1] = 20, *p = 20*”