У меня есть код:
unsigned int length = strlen(somestring);
Я компилирую с уровнем предупреждения на 4, и он говорит мне то "преобразование из size_t
кому: unsigned int
, возможная потеря данных", когда a size_t
a typedef
для unsigned int
.
Почему!?
Править:
Я просто решил свою собственную проблему. Я - пользователь XP, и мой компилятор проверял на совместимость на 64 бита. С тех пор size_t
зависимый платформы, для 64 битов это было бы unsigned long long
, где это не то же как unsigned int
.
Поскольку unsigned int
на вашем компьютере более узкий тип, чем size_t
. Скорее всего size_t
имеет ширину 64 бита, а unsigned int
имеет ширину 32 бита.
РЕДАКТИРОВАТЬ: size_t не является typedef для unsigned int.