Здравствуйте, Erop, Вы писали:
E>Если же коротко повторить, что бы не обсуждать в нескольких подветках, то
E>unsigned -- это кольцо по модулю вычетов известных степеней 2
E>signed -- это отрезок целых с доопределением операции деления на случай некратных чисел при помощи целочисленного деления и взятия остатка.
E>Соответственно, если мы где-то можем рассуждать о коде, игнорируя разрядность целых, то есть как о числах в математическом смысле, то этот код более читабельный и высокоуровневый, чем такой, где мы не можем игнорировать разрядность переменных.
E>И в этом смысле семантика индексов -- это тоже отрезок целого ряда, просто другой. И создавать его поверх отрезка целых [INT_MIN, INT_MAX] намного естественнее, чем над кольцом по модулей вычетов.
Не не не, Дэвид Блэйн, меня ты не проведёшь.
Там где проявляется закольцованность у безнаковых, у знаковых вообще случается undefined behaviour (речь же о C++?). Причём для индексов случается чаще, в силу меньшего положительного диапазона.
В одном случае имеем чёткую модель кольца, а в другом даже магмы нет, ибо операции не замкнуты