Это связано с тем, что вы использовали оператор post-increment. В этой следующей строке кода
x = x++;
Случается, что вы присваиваете значение x x. x ++ увеличивает x после того, как значение x присваивается x. Так работают операторы post-increment. Они работают после выполнения заявления. Таким образом, в вашем коде x возвращается сначала после этого, после чего он увеличивается.
Если вы сделали
x = ++x;
Ответ будет равен 8, потому что вы использовали оператор предварительного инкремента. Это увеличивает значение сначала перед возвратом значения x.