Mientras leía un artículo, me encontré con una pregunta sobre palabras clave sin firmar en C.
Entonces el rango de valores de int es 0-127 (la representación binaria es 00000000-01111111) y 0-menos 127 ( La representación binaria es 00000000-111111111), el primer 1 representa un número negativo, es decir, el signo debe ocupar un bit
Si es un int sin signo, entonces no hay bit de signo, es decir es decir, no es necesario considerar números negativos. El signo debe ocupar un bit
Si es un int sin signo, no hay bit de signo, es decir, no es necesario considerar números negativos, entonces el valor es 0-255 (representación binaria es 00000000-111111111), los primeros 1 símbolos no están representados ahora
Entonces, en su código, cuando se ejecuta i, si i=-1, su representación binaria es 1111111111, entonces el valor es 0-255 (la representación binaria es 00000000 -111111111) y 0-menos 127 (la representación binaria es 00000000-111111111). Su representación binaria es 1111111111, que es 255.