В соответствии с таблицей приоритетов операторов на языке C/C++ (см. Википедию) оператор приращения (++) имеет приоритет относительно оператора присваивания (=).Почему компилятор C++ не дает приоритет (оператор приращения при назначении) в этой простой программе?
Может кто-нибудь объяснить, почему компилятор сначала присваивает значение (1 в счете [x]), а затем увеличивает значение индекса (i ++) в этой простой программе. Я думаю, что это должно быть наоборот (первое увеличение, а затем назначить):
#include <iostream>
using namespace std;
int bill[] = {16, 17, 18, 19, 20};
int main()
{
int i = 3;
bill[(i++)] = 1; // I think it should be bill[4] = 1;
cout << bill[0] << endl;
cout << bill[1] << endl;
cout << bill[2] << endl;
cout << bill[3] << endl;
cout << bill[4] << endl;
cout << "Index value:" << i << endl;
return 0;
}
Выход:
16
17
18
1
20
Index value:4
я делаю что-то не так?
Обратите внимание, что «++ i» является операцией * pre-increment *, а «i ++» - это операция * post-increment *. – dmckee
Рассмотрите возможность поиска ответов, которые вы нашли полезными. И если один из ответов действительно очистил вас, вы должны принять его, нажав на эту маленькую зеленую галочку. – greatwolf