signed/unsigned integer
-
Hallo,
ich habe mal eine (Anfänger) Verständnisfrage zum signed und unsigned integer Datentyp.
In dem Kurs, den ich gerade lese, steht folgendes Programm um den Unterschied von signed und unsigned zu verdeutlichen:#include <iostream> /* This program shows the difference between signed and unsigned integers. */ using namespace std; int main() { short int i; // a signed short integer short unsigned int j; // an unsigned short integer j = 60000; i = j; cout << i << " " << j; return 0 ; }
Ich dachte sowohl integer als auch short integer ist als default signed? Wo wird denn hier ein Datentyp als unsigned definiert?
short int i; // a signed short integer short unsigned
Was soll denn der Kommentar bedeuten? Gleichzeitig signed und unsigned??
int j; // an unsigned short integer
Und hier ist int weder short noch unsigned, oder?
Wahrscheinlich gibt es eine einfach Erklärung und/oder ich habe es einfach nicht verstanden. Aber ich würde es wirklich gerne verstehen und freue mich über jeden Hinweis!
Hier noch die Kopie aus dem Buch:
http://img517.imageshack.us/img517/7669/integere.jpgDanke!
-
Ich weis nicht genau was der standard dazu sagt, ober normalerweise wird default signed angenommen.
short int == signed short int == signed short == short
int == signed int
In dem Beispiel wäre somit keine Variable unsigned.
Außerdem ist j vom typ int, und nicht short int.Also
i ist "a signed short integer"
j ist "a signed integer"Im Visual C++ Compiler kann man einstellen, dass defaultmäßig unsigned angenommen wird. Ich glaube aber kaum, dass der autor so etwas meint...
-
Nochmal zum Versändnis:
Möglichkeiten "unsigned short" auszudrücken: - unsigned short int - unsigned short Möglichkeiten "signed short" auszudrücken: - signed short - signed short int - short - short int Möglichkeiten "unsigned int" auszudrücken: - unsigned int - unsigned Möglichkeiten "signed int" auszudrücken: - int - signed int - signed
-
So wie du es erklärst, habe ich es auch verstanden.
MMn verdeutlicht das Programm den Unterschied zw. short int und int.
Wobei, was man dabei anscheinend lerne sollte, die erste Bit Stelle als Vorzeichen interpretiert wird, wenn j i zugewiesen wird.Nur was sollen die Kommentare? Die machen doch gar keinen Sinn?
-
Die Kommentare snd definitiv falsch. So ist es richtig:
#include <iostream> /* This program shows the difference between signed and unsigned integers. */ using namespace std; int main() { short int i; // a signed short integer unsigned short int j; // an unsigned short integer j = 60000; i = j; cout << i << " " << j; /* Ausgabe: -5536 60000 */ return 0 ; }
-
Alles klar. Danke für die Hilfe!
-
IWish schrieb:
Im Visual C++ Compiler kann man einstellen, dass defaultmäßig unsigned angenommen wird.
Ich glaube du meinst, dass man vorgeben kann ob char signed oder unsigned ist.
-
Was ich meine ist unter
Projekt-Eigenschaften -> Konfigurationseigenschaften -> C/C++ -> Sprache -> Standardzeichen "unsigned" [der Standardzeichentyp wird auf unsigned gesetzt].
Ist damit char gemeint? Ich habe die Option noch nie gebrauchtUnd mich würde mal interessieren, was der Standard dazu sagt? Ist default signed angenommen oder ist das Implementierungsspezifisch?
-
Die integralen Typen
short
,int
undlong
sind ohne Angabe immersigned
. Beichar
hängt es von der Implementierung ab, ob das Layout (Bitmuster im Speicher) gleich wie beiunsigned char
odersigned char
aufgebaut ist. In jedem Falle sind das jedoch drei verschiedene Typen.