Почему делает преобразование от size_t до неподписанного интервала, дают мне предупреждение?

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

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.

5
задан Jesse Beder 3 April 2010 в 03:11
поделиться

1 ответ

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

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

9
ответ дан 14 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: