В чем разница между size_t и int в C ++?

148
задан Matthew Murdoch 7 July 2015 в 20:39
поделиться

3 ответа

От дружественная Википедия :

stdlib.h и stddef.h заголовочные файлы определяют тип данных, названный size_t, который используется для представления размера объекта. Библиотечные функции, которые берут размеры, ожидают, что они будут иметь тип size_t, и sizeof оператор оценивает к size_t.

фактический тип size_t зависим от платформы; частая ошибка состоит в том, чтобы предположить, что size_t совпадает с неподписанным интервалом, который может привести к программным ошибкам, особенно поскольку 64-разрядная архитектура становится более распространенной.

кроме того, проверьте , Почему size_t имеет значение

142
ответ дан Kai Walz 25 August 2019 в 18:50
поделиться

size_t является типом, используемым для представления размеров (поскольку его имена подразумевают). Его платформа (и даже потенциально реализация) зависимый, и должна использоваться только с этой целью. Очевидно, представляя размер, size_t не подписан. Много функций stdlib, включая malloc, sizeof и различные функции строковой операции используют size_t в качестве типа данных.

интервал подписывается по умолчанию, и даже при том, что его размер является также иждивенцем платформы, это будут закрепленные 32 бита на самой современной машине (и хотя size_t составляет 64 бита на архитектуре на 64 бита, интервал остаются 32 бита длиной на той архитектуре).

Для суммирования: используйте size_t для представления размера объекта и интервала (или долго) в других случаях.

32
ответ дан Axelle Ziegler 25 August 2019 в 18:50
поделиться

Это - потому что size_t может быть чем-либо кроме интервала (возможно, структура). Идея состоит в том, что это разъединяется, это - задание от базового типа.

8
ответ дан graham.reeds 25 August 2019 в 18:50
поделиться