Базовые спецификации Open Group Issue 7, IEEE Std 1003.1, издание 2013 г., описание <sys/types.h>
говорит:
Тип ssize_t способен хранить значения как минимумв диапазоне [-1, SSIZE_MAX].
Другими словами, ssize_t
подписано, , но набор отрицательных значений, которые он может представлять, может быть ограничен просто {-1}.
А ptrdiff_t
, с другой стороны, гарантированно имеет более симметричный положительный / отрицательный диапазон.
Я признаю, что на практике это маловероятночто ssize_t
будет таким ограниченным в отрицательном диапазоне, но это возможно.
Конечно, другое отличие состоит в том, что ptrdiff_t
доступен, когда вы программируете на стандартном C или C ++, но ssize_t
может быть недоступно, если вы не используете стандартную систему POSIX.