为什么从size_t转换为unsigned int会给我一个警告?

Mar*_*lon 5 c++ size-t

我有代码:

unsigned int length = strlen(somestring);
Run Code Online (Sandbox Code Playgroud)

我与4警告级别编译和它告诉我,"转换,从size_tunsigned int,可能的数据丢失",当size_ttypedef一个unsigned int.

为什么!?

编辑:

我刚解决了自己的问题.我是XP用户,我的编译器正在检查64位兼容性.由于size_t是平台相关的,对于64位,它将是一个unsigned long long,其中它与a不同unsigned int.

Bil*_*eal 9

因为unsigned int你机器上的类型比较窄size_t.最有可能的size_t是64位宽,而宽度unsigned int为32位.

编辑:size_t不是unsigned int的typedef.