The second line has "unspecified behavior" (UB). C doesn't define what order most the operands of most operators are evaluated, so the values added in "(b++) + (++b)" could be different on different C compilers; or even on the same compiler when compiled in a different context such as when compiled for debugging or with different optimization options. The left operand could be 3 or 4 and the right could be 4 or 5, so sums from 3+4+2 to 4+5+2 are possible.
In any case, it seems a be greater than b, so c will get the unspecified value of a in the next statement.
Then in the fourth statement, b now gets an unspecified value based on a.
So, the final values of a, b and c are all unspecified.
In general, modifying a variable (with ++, -- or an assignment operator) and then using that variable again in the same expression leads to problems like this one. Only the ||, &&, ?: and comma operators define the order that their operands are evaluated in.