我有代码:
unsigned int length = strlen(somestring);
我正在使用4上的警告级别进行编译,当size_t
为{{unsigned int
时,它告诉我“从size_t
转换为typedef
,可能会丢失数据” 1}}表示unsigned int
。
为什么!?
编辑:
我刚解决了自己的问题。我是XP用户,我的编译器正在检查64位兼容性。由于size_t
取决于平台,因此对于64位,它将是unsigned long long
,其中unsigned int
与{{1}}不同。
答案 0 :(得分:9)
因为unsigned int
是您机器上比size_t
更窄的类型。最有可能size_t
是64位宽,而unsigned int
是32位宽。
编辑:size_t不是unsigned int的typedef。