Это ожидаемое поведение. То, что на самом деле происходит, имеет больше смысла, если вы посмотрите на то, что происходит на уровне байт-кода, когда выполняется соответствующая строка:
результат = результат ++;
registerA = результат (registerA == 0)
результат + = 1 (результат == 1) - эти первые две строки являются результатом ++ part
результат = регистр А (результат == 0)
Переменная «результат» присваивается дважды в этом операторе, один раз с приращением, а затем снова со значением до приращения, что, по сути, делает его пустым.