我的代码:为什么从size_t转换为unsigned int会给我一个警告?
unsigned int length = strlen(somestring);
我与4警告级别编译和它告诉我,“转化率从size_t
到unsigned int
,可能丢失数据”当size_t
是一个一个typedef
unsigned int
。
为什么?
编辑:
我刚刚解决了我自己的问题。我是XP用户,我的编译器正在检查64位兼容性。由于size_t
是平台相关的,对于64位,它将是unsigned long long
,这与unsigned int
不一样。
所有尺寸都相关。 'size_t'不必等于任何其他类型,它们都可以不同。唯一的保证就是sizeof(char)== 1',并且'char'中的位数(也取决于!)在头文件''的宏'CHAR_BIT'中定义,并且sizeof(short)> = sizeof(char),sizeof(int)> = sizeof(long)和sizeof(long long)> = sizeof(long)'。 –
GManNickG
2010-04-03 03:12:57
@GMan:其实我相信'sizeof(long)> = sizeof(int)':) +1虽然 – 2010-04-03 03:20:28
@Billy:哦,dangit。现在修复已经太迟了。 -_- 好吧。 :3 – GManNickG 2010-04-03 03:22:27