Традиционно i ++ был оператором post-increment, а это означало, что новое добавочное значение не будет доступно до следующей ссылки на него. В то время как оператор pre-increment ++ i сразу сделает инкрементное значение. Использование i = i + 1 не использует эту логику, потому что поведение специфично для инкрементных операторов.