I would not say it's a bug, C# has different evaluation rules compared to C++.
If you want what you expect, you can do it as:
j = ++j;
And by the way, the behavior for that line of code is undefined in C/C++ and it's up to the individual compiler implementations to decide how to handle this. For more information, google for "C++ sequence points".
BTW the C# behavior is undefined too. A future version of C# may decide to implement this differently (since it's not in the standard). In general it's best to avoid writing code where the same variable is modified multiple times on either side of an assignment operator.