Verwendet das nicht signierte Schlüsselwort standardmäßig einen bestimmten Datentyp in C ++? Ich versuche, eine Funktion für eine Klasse für den Prototyp zu schreiben:
unsigned Rotate(unsigned object, int count)
Aber ich verstehe nicht wirklich was unsigned
bedeutet. Sollte es nicht so sein unsigned int
oder so?
Ganzzahlige Typen:
Sei vorsichtig mit char:
quelle
Ja, signiert und nicht signiert können auch als eigenständige Typspezifizierer verwendet werden
Die ganzzahligen Datentypen char, short, long und int können abhängig vom zu darstellenden Zahlenbereich entweder vorzeichenbehaftet oder vorzeichenlos sein. Vorzeichenbehaftete Typen können sowohl positive als auch negative Werte darstellen, während vorzeichenlose Typen nur positive Werte (und Null) darstellen können.
Eine vorzeichenlose Ganzzahl, die n Bits enthält, kann einen Wert zwischen 0 und 2 n - 1 haben (das sind 2 n verschiedene Werte).
Vorzeichenbehaftete und vorzeichenlose Zeichen können jedoch auch als eigenständige Typspezifizierer verwendet werden. Dies bedeutet dasselbe wie vorzeichenbehaftetes int bzw. vorzeichenloses int. Die folgenden zwei Erklärungen sind gleichwertig:
quelle
short
undlong
sind auch Typmodifikatoren . Wenn Sie schreibenshort s
, bedeutet das tatsächlichshort int s
, genau wie esunsigned u
tatsächlich bedeutetunsigned int u
. (undunsigned short
bedeutetunsigned short int
)Informationen zum nicht signierten Schlüsselwort finden Sie in der C ++ - Referenz .
In dieser Angelegenheit gibt es zwei verschiedene Arten: signiert und nicht signiert. Der Standardwert für Ganzzahlen ist signiert, was bedeutet, dass sie negative Werte haben können.
Auf einem 32-Bit-System ist eine Ganzzahl 32 Bit, was bedeutet, dass sie einen Wert von ~ 4 Milliarden enthalten kann.
Und wenn es unterzeichnet ist, bedeutet dies, dass Sie es aufteilen müssen, sodass -2 Milliarden bis +2 Milliarden übrig bleiben.
Wenn es nicht vorzeichenlos ist, kann der Wert jedoch keine negativen Zahlen enthalten. Für ganze Zahlen würde dies 0 bis +4 Milliarden bedeuten.
Es gibt ein bisschen mehr Informationen dazu auf Wikipedia .
quelle
Ja, das heißt
unsigned int
. Früher gab es viele Stellen, an denen nur angenommen wurde, dass Sie in C keinen Datentyp angegeben habenint
. Dies war beispielsweise ein Versuch von Funktionsrückgabetypen.Diese Warze wurde größtenteils ausgerottet, aber Sie stoßen hier auf ihre letzten Spuren. IMHO sollte der Code so festgelegt werden, dass
unsigned int
nur die Art von Verwirrung vermieden wird, die Sie erleben.quelle