реклама на сайте
подробности

 
 
> Использование ptrdiff_t и size_t, Поясните особенности
kolobochishe
сообщение Mar 9 2016, 13:31
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634



Всем доброго дня!

Прочитал тут статью про ptrdiff_t и не очень понял следующего:

Цитата
Тип size_t - базовый беззнаковый целочисленный тип языка Си/Си++. Является типом результата, возвращаемого оператором sizeof. Размер типа выбирается таким образом, чтобы в него можно было записать максимальный размер теоретически возможного массива любого типа. Например, на 32-битной системе size_t будет занимать 32-бита, на 64-битной - 64-бита.


и далее следует

Цитата
Тип ptrdiff_t - базовый знаковый целочисленный тип языка Си/Си++. Размер типа выбирается таким образом, чтобы в него можно было записать максимальный размер теоретически возможного массива любого типа. На 32-битной системе ptrdiff_t будет занимать 32-бита, на 64-битной - 64-бита. Как и в size_t в переменную типа ptrdiff_t может быть безопасно помещен указатель


С беззнаковым size_t все понятно. А как в знаковый может быть помещен адрес без каких-либо ограничений. Диапазон то сузился в 2 раза. И даже если этот тип создан для разности двух указателей, то разность будет ограничена не UINT_MAX, а INT_MAX. Может я чего-то не так понимаю? По-моему, ptrdiff_t на 32 разрядной машине должен быть уже 64 разрядным
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01364 секунд с 7
ELECTRONIX ©2004-2016