es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comportamiento extraño del desplazamiento a la izquierda con la variable char en C.

Estoy intentando realizar un desplazamiento a la izquierda con una variable char. Está dando una salida extraña. Según el estándar de C, el rango de char firmado es de 127 a -128, así que la salida del siguiente programa debería ser -128, pero está imprimiendo 640.

#include <stdio.h>

int main()
{
char c = 5;

printf("%d\n", (c << 7));

return 0;

}

¿Es un comportamiento indefinido?

Compilador en línea: Wandbox

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es un comportamiento indefinido. Según el estándar de C, cuando se desplaza hacia la izquierda un entero con signo, los bits que se desplazan más allá del bit más significativo se descartan y el bit más significativo se rellena con el bit de signo. En este caso, el bit de signo es 0, por lo que el resultado debería ser 0. Sin embargo, la salida es 640, lo que indica que el bit de signo no se está rellenando correctamente.

Comments are closed.