что вы делаете это: -
foo(++x, x+=y);
давай сломаем это
x = 10;
y = 5;
сейчас ++x
, здесь ++
- это оператор преинкремента, что означает, что сначала x
будет увеличиваться, а затем использоваться. С другой стороны, x++
означает, что сначала будет использоваться x
, затем он получит постепенно.
++x // turns x = 11 and then
x+=y // turns x = 16 , which also changes first parameter to x to 16
короче говоря, то, что вы посылаете в функцию, это
foo(16,16)
16*16 = 256
изучите эту тему: -
унарные и бинарные операторы
и preincrement и postincrement