Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Это уже абстрактная философия.
Если на бумаге записаны числа 1, 2, 3 и т.п., то для них справедливы утверждения: "числа являются целыми", "числа являются натуральными". Что меняется от того, что те же самые числа записаны в память компьютера с аналогичной их интерпретацией в языке?
Это не абстрактная философия, а вполне конкретная практика. Если мне надо числа вычитать и брать противоположный элемент, то я выберу signed. Если ввести можно только положительное число, то проверю его один раз на корректность. Вот и всё. Я просто делаю проверку при вводе значения, а дальше использую его как целое безо всяких побочных эффектов.
Альтернатива этому подходу: также проверять число при вводе (потому что какие-нибудь ограничения всегда есть, например на максимально значение), а потом каждый раз при вычитании либо кастую к знаковому, либо добавляю дополнительные условия на больше/меньше.
Тут именно незамкнутость натуральных чисел относительно вычитания имеет принципиальное значение. Как бы ты мне не повторял, что натуральные — это подмножество целых, но на практике от этого не легче и надо работать в целых, чтобы жизнь не превратилась в кошмар