Вы объявили обе переменные как uint8, что означает, что они занимают максимум 8 бит в памяти, и это только положительное значение, поэтому максимальное число может быть 2 ^ 8 (256).
Теперь, когда вы добавляете два числа, это просто добавляет его и возвращает результат => 255 + 127 = 382;
Но переменная c также имеет тип uint8, и это число выходит за пределы диапазона, поэтому, чтобы соответствовать этому числу в переменной, оно вычитает выход с максимальным числом и настраивается в переменной C.
a + b = 255 + 127 = 382
c = 382 - 256
= 126