简体   繁体   中英

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 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 .

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM