Tengo un problema de programación simple en lenguaje C. Espero que mis hermanos y hermanas puedan darme algún consejo.
1. Los enteros en las computadoras están representados por el complemento a dos (¿cuál es el complemento a dos? Verifique la información relevante)
2. Las constantes enteras en C son de tipo int por defecto. el tipo es un tipo firmado (consulte la información relevante para los tipos firmados y sin firmar)
3. Los datos del tipo char ocupan un byte en la computadora, el tipo int ocupa 4 bytes, el tipo char es un tipo firmado p>
4. El código binario de 197 almacenado en la computadora es: 0000... 11000101 (el tipo int ocupa 4 bytes y hay 3*8=24 delante de 11000101 0)
De manera similar, el código binario de 198 almacenado en la computadora es: 0000... 11000110
5. c1=197; Se asignan diferentes tipos de datos (los tipos grandes se asignan a tipos pequeños), el sistema truncará automáticamente los bits altos y asignará los bits significativos bajos a variables de tipo pequeño
Ahora vea por qué la salida es. : printf("c1=d, c2=d\n", c1, c2); =》c1=-59, c2=-58
Presione d para generar una variable char. el valor de la variable.
Lo que se almacena en c1 es 11000101, que es -59 como número con signo, es decir: 11000101 es el complemento de -59
Lo que se almacena en c2 es 11000110, que se interpreta como un número con signo La explicación es -58, es decir: 11000110 es el complemento de -58
7. ; =》c1=?c2=?
Presionar c para generar la variable char es generar el carácter representado por la variable
Desde 197 (-59) 198 (-58) No es un carácter válido (ASCII), ¿porque sólo se pueden utilizar estos? para reemplazar.