Нет, я думаю, что вы модифицируете объект (i) несколько раз между точками последовательности.IIRC ни поразрядно, ни, ни индексация массива не являются точками последовательности.Вам разрешено изменять объект только один раз, иначе не определено или неопределенное поведение.
ПРИМЕЧАНИЕ.Это не обязательно проблема, связанная с оптимизатором, это просто не разрешено законом.
Редактировать: вот ссылка на точки последовательности - http://msdn.microsoft.com/en-us/library/d45c7a5d(VS.80).aspx