Что выводит следующий код на консоль?
map<int,int> m;
m[0] = m.size();
printf("%d", m[0]);
Возможные ответы:
- Поведение кода не определено, поскольку он не определен, какой оператор
m[0]илиm.size()выполняется сначала компилятором. Поэтому он может печатать1, а также0. - Он печатает
0, потому что выполняется правая часть оператора присваивания. -
Он печатает
1, потому чтоoperator[]имеет наивысший приоритет для полного оператораm[0] = m.size(). Из-за этого происходит следующая последовательность событий:-
m[0]создает новый элемент на карте -
m.size()получает вызов, который теперь1 -
m[0]получает назначенное ранее возвращенное (по m.size())1
-
-
Настоящий ответ?, который мне неизвестен ^^