Let's assume that p is a string.
while (*p) p++; /* (1) */
while (*++p) ; /* (2) */
while (*p++) ; /* (3) */
- (1) is different from (2) if
p is an empty string.
- (1) is different from (3) because with (3), even if the current value of
*p is a '\0' character, p is incremented.