С другой стороны, вы можете посмотреть на это:
bill[(++i)] = 1;
Вы можете прочитать это как, сначала увеличьте 'i', затем сделайте утверждение.
bill[(i++)] = 1;
Вы можете прочитать это как, сначала сделайте оператор, затем увеличьте 'i'.
Если вам интересно, как это возможно, можно реализовать внутреннее постинкрементное отображение, чтобы получить поведение, которое вы видите:
int post_increment(int &i)
{
int t = i;
i = i + 1;
return t;
}
bill[post_increment(i)] = 1; // access bill[3] even though i == 4
против предварительного увеличения, которое выглядит следующим образом:
int pre_increment(int &i)
{
i = i + 1;
return i;
}
bill[pre_increment(i)] = 1; // access bill[4] where i == 4