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

¿Fue útil?

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
scroll top