5

我有代码:

unsigned int length = strlen(somestring);

我正在使用 4 的警告级别进行编译,它告诉我当 a是 a时“从size_tto转换unsigned int,可能丢失数据” 。size_ttypedefunsigned int

为什么!?

编辑:

我刚刚解决了我自己的问题。我是 XP 用户,我的编译器正在检查 64 位兼容性。由于size_t依赖于平台,因此对于 64 位,它将是unsigned long long,这与unsigned int.

4

1 回答 1

10

因为unsigned int在您的机器上是比size_t. 最有可能size_t是 64 位宽,而unsigned int32 位宽。

编辑: size_t 不是 unsigned int 的 typedef。

于 2010-04-03T02:36:29.120 回答