Why does converting from a size_t to an unsigned int give me a warning?
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 l开发者_如何学JAVAoss 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
.
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.
精彩评论