Was ist das unsignierte Pendant von ptrdiff_t? Und ähnlich - was ist das signierte Gegenstück von size_t?
Was ich versuche zu erreichen, ist ein vorzeichenloser Typ, mit dem ich die positiven Werte der Variablen ptrdiff_t speichern kann, ohne mich um große Werte kümmern zu müssen - das scheint size_t zu sein.
Umgekehrt - Ich hätte gerne einen signierten Typ, bei dem ich die Werte von size_t speichern kann, wiederum ohne mich um große Werte zu kümmern.
Ich glaube nicht, dass es ein formales unsigniertes Gegenstück zu ptrdiff_t
(nein uptrdiff_t
) gibt, aber die Verwendung von size_t
ist ziemlich vernünftig.
In POSIX ist das signierte Gegenstück zu size_t
ssize_t
. Es ist der Typ, der von Funktionen wie read()
zurückgegeben wird, zum Beispiel.
Dies deutet darauf hin, dass es nur wenige Implementierungen geben wird, bei denen der zugrundeliegende Typ von ssize_t
und ptrdiff_t
unterschiedlich sein wird.
size_t
wird verwendet, um Objektgrößen darzustellen. Es wurde allgemein angenommen, dass Compiler-Autoren keine Objekte mit negativen Größen erstellen werden.
Beachten Sie, dass Sie mit ptrdiff_t 'die Differenz abhängig davon erhalten, wie Sie vergleichen, so dass ein signierter Typ sinnvoll ist (das Ändern in einen vorzeichenlosen Typ für vernünftige Werte ist trivial):
5.7 Zusatzoperatoren
6 [...] Wie bei jedem anderen arithmetischen Überlauf ist das Verhalten nicht definiert, wenn das Ergebnis nicht in den angegebenen Bereich passt. [...]
Sie müssen möglicherweise einen speziellen Typ für "sehr große Werte" erstellen.
Tags und Links c++