Здравствуйте, nixite, Вы писали:
MN>>Да согласен — ваша правда... это я поторопился... но как-то у меня такой проблемы никогда не было... наверное потому, что для работы с контейнерами C++ всегда использовал итераторы, а для доступа к массивам в стиле pure C использовал знаковый int и никогда не путал эти понятия между собой, чего и вам советую... ну или если вы моему совету не внемлите, то обращайтесь к С. Ю. Губанову — он вам других советов надаёт
N>для любителей signed int'ов:
N>положим захотелось нам искать среднее двух чисел и написали мы функцию:
N>int kaka (int a, int b){return (a+b)/2;}
N>и всё вроде тип-топ, но вот тут сунули нам два числа (вполне корректных):
N>int a = 2113929216;
N>int b = 2113929210;
N>и что?
а какое решение-то простое есть? ассемблер в три команды не предлогать, всё на с++
N>p.s. я решение знаю, но не сказал бы что оно простое
Решение состоит в том, что система должна генерировать исключение (exception) при переполнении. Отсутствие этой возможности я забыл добавить в качестве 7-го пункта в списке ошибок проектирования языка.