Они предназначены для независимости от платформы.
size_t
по определению является типом, возвращаемым sizeof
.Он достаточно большой, чтобы представлять самый большой объект в целевой системе.
Не так много лет назад 32 бита было бы достаточно для любой платформы.64 бит сегодня достаточно.Но кто знает, сколько бит понадобится через 5, 10 или 50 лет?
Писать свой код не важно - т. Е. Всегда использовать size_t
, когда вы имеете в виду «размер объекта»- вы можете написать код, который на самом деле будет компилироваться и выполняться через 5, 10 или 50 лет.Или, по крайней мере, иметь шанс на победу.
Используйте типы, чтобы сказать, что вы имеете в виду.Если по какой-то причине вам требуется определенное количество битов (возможно, только при работе с внешним форматом), используйте тип с определенным размером.Если вы хотите что-то, что является «естественным размером слова машины» - то есть, быстро - используйте int
.
Если вы имеете дело с такой программой, как sizeof
или strlen
, используйтетип данных, соответствующий этому интерфейсу, например size_t
.
. Никогда не пытайтесь назначить один тип другому, если он не достаточно велик для хранения значения по определению.