我的代碼:爲什麼從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