I'm pretty sure I agree with Salem
Edit: gcc even warns you about it :/
Code:
#include <stdio.h>
int main(void)
{
int p = 10;
int a, b, c, d;
a = (++p) + p + p;
b = p + (++p) + p;
c = p + p + (++p);
d = p + p * (++p);
return 0;
}
Code:
dumb.c: In function main:
dumb.c:8:10: warning: operation on p may be undefined [-Wsequence-point]
8 | a = (++p) + p + p;
| ~^~~~
dumb.c:8:10: warning: operation on p may be undefined [-Wsequence-point]
dumb.c:9:14: warning: operation on p may be undefined [-Wsequence-point]
9 | b = p + (++p) + p;
| ~^~~~
dumb.c:9:14: warning: operation on p may be undefined [-Wsequence-point]
dumb.c:10:18: warning: operation on p may be undefined [-Wsequence-point]
10 | c = p + p + (++p);
| ~^~~~
dumb.c:11:18: warning: operation on p may be undefined [-Wsequence-point]
11 | d = p + p * (++p);
| ~^~~~
dumb.c:11:18: warning: operation on p may be undefined [-Wsequence-point]