переменные типа size_t и ptrdiff_t

Читая сообщения в Интернете, связанные с size_t и ptrdiff_t , я хочу подтвердить следующее:

  1. если максимальный размер массива меньше 1/2 * (максимальное число, представимое с помощью size_t) , я могу безопасно использовать ptrdiff_t и проверить относительные расстояния между двумя указателями на один и тот же объект? (Поскольку я говорил о массиве, " указатели на один и тот же объект "означает" указатели на один и тот же массив ").

  2. если я хочу объявить переменную, которая может представлять смещение от другого указателя, мне лучше объявить ее как тип ptrdiff_t ?

  3. Как вывести переменные типа size_t и ptrdiff_t в C и C ++? Правильно ли следующее: Строка межплатформенного формата для переменных типа size_t?

  4. is uintptr_t - это просто другое имя для size_t ИЛИ оно должно использоваться как отдельный тип из size_t ?

  5. is ssize_t и intptr_t другие имена для ptrdiff_t ИЛИ его нужно использовать по-другому?

I я начинаю использовать gcc на Ubuntu. Я только что узнал об этих типах, когда использовал чужие коды.

ДОБАВЛЕНО: Я действительно хочу иметь возможность использовать отрицательные смещения. И какая разница в использовании uintptr_t и intptr_t ?

20
задан Community 23 May 2017 в 10:30
поделиться