Vector.size() -100
Что здесь происходит?
Один из операндов арифметического выражения подписан, а другой операнд не подписан. Более того, ранг типа без знака, вероятно, выше, чем ранг подписанного операнда.
В этом случае подписанный операнд преобразуется в тип без знака более высокого ранга. Поскольку 100 представимо в типе без знака, это не влияет на значение.
Вычитание выполняется для операндов без знака. Если математический результат операции без знака был бы вне представимого диапазона (то есть отрицательно), то фактический результат был бы представимым значением, которое согласуется с математическим результатом по модулю M, где M - число представимых значений в беззнаковомtype.
Поскольку в представляемом диапазоне целых чисел без знака присутствуют только положительные значения, фактический результат, соответствующий математическому результату, также должен быть положительным.