문제

Actually I've (probably) a "simple" problem. So I don't know how to cast a signed integer to an unsigned integer.

My code :

signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);

If I send the unsigned value to the console (see my last code line), I always get back an signed integer.

Can you help me?

Thanks a lot!

Kind regards, pro

도움이 되었습니까?

해결책

printf("Unsigned : %u\n", uEntry);
//                 ^^

You must use the %u specifier to tell the printf runtime that the uEntry is an unsigned int. If you use %d the printf function will expect an int, thus reinterpret your input back to a signed value.

다른 팁

Append these two lines at the end of your code, and you would understand what is going on.

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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top