Oft ist bekannt, dass Werte positiv sind. Zum Beispiel ist die TCP / UDP-Sequenznummer immer ein positiver Wert. Sowohl int
als auch unsigned int
sind groß genug, um sogar die größte sequence number
zu speichern, so dass ich jeden dieser Typen verwenden kann. Es gibt viele andere Beispiele, bei denen bekannt ist, dass Werte positiv sind.
Gibt es Gründe dafür, unsigned
type zu verwenden, wenn die Kapazität des regulären signed
type ausreichend ist (und oft mehr als genug)?
Persönlich tendiere ich dazu, normale Typen zu verwenden, weil:
int
ist wahrscheinlich ein wenig lesbarer als uint
oder unsigned int
UINT
etc. Gründe für die Verwendung von unsigned
type kann ich mir vorstellen:
Ein Grund ist, dass der Vergleich von vorzeichenbehafteten und vorzeichenlosen Zahlen zu überraschenden Ergebnissen führen kann. In C und (denke ich) C ++ bewirkt der Vergleich von vorzeichenbehafteten und vorzeichenlosen Zahlen, dass die vorzeichenbehaftete Zahl als vorzeichenlos interpretiert wird. Wenn der vorzeichenbehaftete Wert negativ ist, wird ein vorzeichenloser Wert einen GRÖSSEREN Wert ergeben als eine vorzeichenlose Zahl, was nicht gewünscht ist. In dieser Frage finden Sie ein Beispiel in Objective-C, das die gleichen Konvertierungsregeln wie C verwendet.
Tags und Links c++ signedness