*p++ understanding
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] = 11, 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 second program is “arr[0] = 10, arr[1] = 20, *p = 20“.
- 3.1 — Operator precedence and associativity
- C Operator Precedence Table
- Operators in C and C++
- Does *p++ increment after dereferencing? [duplicate]
- ++ on a dereferenced pointer in C?
- How does “while(*s++ = *t++)” copy a string?
- C++ Operator Precedence
- C Operator Precedence
- Do you know what *p++ does in C?
- Subject: Re: *p++
- The pre- and postfix versions of incr/decr have different precedence levels.
- Operators, with Precedence and Associativity
- Precedence and Order of Evaluation
- C/Precedence
- CS223
- KernighanRitchie
- C Operator Precedence
No comments:
Post a Comment