Diferencia clave: Char firmado y unsigned son dos tipos de datos utilizados en la programación de C. Tanto los caracteres sin signo como los firmados se utilizan para almacenar caracteres y consisten en un área de 8 bits. Los caracteres sin firmar tienen valores entre 0 y 255, mientras que los caracteres con signo tienen valores entre –128 y 127 (en una máquina con bytes de 8 bits y aritmética de complemento de dos).
C90 habilitó a C para usar palabras clave firmadas y sin firmar con char. Es importante tener en cuenta que solo se utilizan cuando se deben manejar valores enteros pequeños. Los caracteres char firmado y unsigned son bytes de 8 bits en una máquina de 16 bits. Se diferencian principalmente en el rango que representan. El rango de caracteres no firmados es de 0 a 255, mientras que el tamaño de caracteres char o firmados es de -128 a 127.
La transformación de char en valores int se realiza automáticamente por C. Sin embargo, aún depende de la máquina que decide que el resultado sería negativo o no. La mayúscula A es equivalente a un valor entero de 65.
Los términos no firmados y firmados utilizados con char significan que si el contenido de estos ocho bits se interpreta en un entero, estos términos pueden hacer alguna diferencia. El tipo de datos de caracteres suele ser de tipo no firmado por defecto. Sin embargo, en el modo C ++ y ANSI C, hay una opción para declararlos explícitamente como caracteres firmados o no firmados. En caracteres sin signo, se utilizan 8 bits como bits de datos, mientras que en la memoria se utiliza la representación de un bit con signo 1 (el bit más significativo) para los bits con signo y 7 bits como bits de datos. Si el bit firmado es 0 significa que el número es positivo. Si el bit firmado es 1, el número es negativo.
Comparación entre Char firmado y Sin firmar:
Char Firmado | Charla sin firmar | |
Distancia | -128 a +127 | 0 a 255 |
Ancho de bit típico | 1 byte | 1 byte |
Ejemplo (x = 10000010) | Firmado firmado x = -2 | Carácter sin firmar = 82 |
Representación | 1 bit = bit firmado 7 bits = bits de datos | 8 bits = bits de datos |
Declaración | Firmado char b | Carácter sin firmar |