I have the code:
unsigned int length = strlen(somestring);
I'm compiling with the warning level on 4, and it's telling me that "conversion from size_t
to unsigned int
, possible loss of data" when a size_t
is a typedef
for an unsigned int
.
Why!?
Edit:
I just solved my own problem. I'm an XP user, and my compiler was checking for 64 bit compatibility. Since size_t
is platform dependent, for 64 bit it would be an unsigned long long
, where that is not the same as an unsigned int
.
Yes, size_t is guaranteed to be an unsigned type.
On a typical 64-bit system, the size_t will be 64-bit, but unsigned int will be 32 bit. So we cannot use them interchangeably. One standard recommendation is that the size_t be at most as big as an unsigned long.
No. size_t can and does differ from unsigned int .
size_t is unsigned because negative sizes make no sense.
Because unsigned int
is a narrower type on your machine than size_t
. Most likely size_t
is 64 bits wide, while unsigned int
is 32 bits wide.
EDIT: size_t is not a typedef for unsigned int.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With