C: Convertir firmado a firmar
-
26-09-2019 - |
Pregunta
De hecho, he (probablemente) un problema de "simple". Así que no sé cómo lanzar un entero con signo de un entero sin signo.
Mi código:
signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);
Si envío el valor sin signo de la consola (ver mi última línea de código), siempre vuelva un entero con signo.
¿Me puede ayudar?
Muchas gracias!
Saludos cordiales, pro
Solución
printf("Unsigned : %u\n", uEntry);
// ^^
Debe usar el especificador %u
para contar el tiempo de ejecución printf
que el uEntry
es un unsigned int
. Si utiliza la función %d
printf
va a esperar un int
, por lo tanto reinterpretar la espalda de entrada a un valor con signo.
Otros consejos
añadir estas dos líneas al final de su código, y usted entender lo que está pasando.
printf("entry: signed = %d, unsigned = %u, hex = 0x%x\n", entry, entry entry);
printf("uEntry: signed = %d, unsigned = %u, hex = 0x%x\n", uEntry,uEntry,uEntry);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow