Почему преобразование size_t в unsigned int дает мне предупреждение? - PullRequest
5 голосов
/ 03 апреля 2010

У меня есть код:

unsigned int length = strlen(somestring);

Я компилирую с уровнем предупреждения 4, и он говорит мне, что «преобразование из size_t в unsigned int, возможная потеря данных», когда size_t равно typedef для unsigned int .

Почему!?

Edit:

Я только что решил свою проблему. Я пользователь XP, и мой компилятор проверял совместимость на 64 бита. Поскольку size_t зависит от платформы, для 64-битной версии это будет unsigned long long, где это не то же самое, что unsigned int.

1 Ответ

9 голосов
/ 03 апреля 2010

Поскольку unsigned int является более узким типом на вашей машине, чем size_t. Скорее всего, size_t имеет ширину 64 бита, а unsigned int имеет ширину 32 бита.

РЕДАКТИРОВАТЬ: size_t не является typedef для unsigned int.

...