Si usa C (o, de hecho, C ++ o Java), puede realizar la sustracción de dos unsigned chars
. Esto se debe a que el compilador trata un char
como un int
, excepto que un char
está diseñado semánticamente para almacenar el valor numérico correspondiente a un carácter en una codificación de caracteres como ASCII. Todas las operaciones aritméticas posibles en int
s son posibles en char
s. Por supuesto, el char
sería promovido a int
antes de que se realice la operación.
De hecho, si necesita almacenar un valor entero de 8 bits sin signo (byte), podría ser mejor usar un tipo como unsigned short short int
(que no cumple con los estándares) o (preferiblemente) el tipo uint8_t
definido en stdint.h
(introducido en C99), solo para indicar mejor la semántica (lo más probable es que uint8_t sea un carácter unsigned char
typedef’d).
El resultado de la resta debe almacenarse como un int
, ya que puede ser negativo. Tú podrías use un signed char
, aunque eso solo podría almacenar valores en el rango de -128
a 127
, y no podría almacenar el resultado correcto con algo como 255 - 2
o 1 - 200
.
- ¿Cuál es la diferencia entre compilación e interpretación justo a tiempo?
- ¿Cuáles son los mejores ejemplos de implementación completa de estructuras de datos prominentes usando C (no C ++)?
- ¿Podría practicar para una entrevista de codificación descifrando la entrevista de codificación para intermediarios?
- ¿Cuál es el significado de 'la entrevista de codificación se centrará más en los aspectos de los datos y en cómo gestiona la gran cantidad de datos'? ¿Debo esperar SQL / DS y A?
- Una persona tiene muchos amigos en Facebook. Dada una persona y un amigo, ¿cómo encuentro la mejor manera de determinar el camino entre ellos?
Un entero de 16 bits con signo sería ideal para el resultado. Puede usar un short int
o el tipo int16_t
definido en stdint.h
, que se recomienda sobre el primero.
Entonces, para su problema, necesitaría una matriz entera de la misma cardinalidad que las matrices originales para almacenar los resultados. Además, como ya se mencionó, los valores de caracteres unsigned char
se promocionarían automáticamente a int
al realizar la resta. Esto se debe a la promoción automática de tipos (consulte Conversión de tipos) definida en los estándares de idioma en sí mismos, sobre los que realmente no puede hacer nada.
#include
#include
int main (nulo)
{
carácter sin signo A [100], B [100];
int16_t diff [100]; / * o short int, si stdint.h no está disponible * /
…… ..
para (i = 0; i <N; i ++) {
diff [i] = A [i] – B [i];
}
…… ..
devuelve 0;
}