2^16?
А тот тип что они возвращают может быть больше 2^16?
Это как?
все, с этом момента ответы тебе платные
С какого момента, мы же про 16битный камень
Это как?
Представьте, что к 16-ти битому камню вы подключили терабайтную флешку.
Могут быть типы больше, чем максимальный адресуемый адрес __int128_t - типичный пример
Но ведь он возвращает uint. Он разве может быть больше на 16битном камне?
Он возвращает std::uintmax_t, если речь все еще про file_size
Собственно, 16-ти битная ардуинка (микроконтроллер семейства avr) отлично щёлкает uint64_t. Если уж вам нужны не гипотетические, а реальные примеры.
Тоесть это типы независимые от платформы? Которые точно везде будут такого размера?
Если я правильно помню вопрос изначально был: "почему file_size возвращает не size_t" Ответ (как Анатолий вам ответил): "решили не привязываться к размеру адресуемой памяти" Почему решили не привязываться? Потому что могут быть типы больше (__uint128_t в 64-ти битной системе, uint64_t в 16-ти битной). file_size возвращает std::uintmax_t, который собственно и есть наибольший uint системы. Он может быть больше size_t
А uint*_t везде будут такого размера, но они не обязаны там быть в первую очередь
uint32_t, строго говоря, может быть определён не на всех платформах. Если вы найдёте экзотическую семибитную машину, uint32_t там не будет. Зато uint_least32_t, вероятно, можно будет пользоваться. Впрочем, я не уверен, что в реальном мире такое встречается.
Обсуждают сегодня