Я заметил, что, когда переменная типа unsigned char хранит значение 0 (00000000 2) и уменьшается на 1 (00000001 2), значение переменной превращается в 255 (11111111 2), что является наивысшим значением, которое может содержать переменная типа unsigned char.
У меня вопрос: почему 00000000 2 - 00000001 2 превращается в 11111111 2? (Я хочу увидеть стоящую за этим арифметику)
Код C, в котором я это наблюдал, был следующим:
#include <stdio.h>
main(){
unsigned char c = 0;
unsigned char d = c - 1;
printf("%d\n%d", c, d);
}
Когда он запускается, отображается следующий вывод:
0
255