nowPlayinfIndex кажется неподписанным.Это значит, что это всегда позитивно.Если вы укажете отрицательное значение, у вас будет переполнение буфера (недостаточное количество?)
Посмотрите, как эти вещи работают в двоичном формате ... Возьмите 8-разрядное целое число со знаком, например:
10000000 (-127)
10000001 (-126)
с беззнаковым:
10000000 (127)
10000001 (128)
РЕДАКТИРОВАТЬ: фиксированные числа
Самый левый бит или бит знака определяет, является ли ваше число + или -.Когда это 1, вы можете считать его -127, поэтому, когда вы добавляете его к вашему промежуточному итогу, вы получаете отрицательное число.Однако для 8-битного целого числа UNSIGNED бит знака имеет значение +127.По этой же причине целые числа со знаком не могут хранить такие большие числа как беззнаковые.