2016-08-05 4 views
0

Was ist standardmäßig Art des integralen wörtlichen unten definiert:Was ist der Standardtyp von Integralliteralen, die in C++ in hex oder oktal dargestellt werden?

0X123 /* hex , int ? unsigned int? long? unsigned long? */ 
0XFFFFFFFE /* hex , value is (2^32-2)=4294967294 .*/ 
/*octal */ /* value = 83*/ 
042747672777 /* octal , greater than 2^32*/ /* value=4691293695 */ 

ich in einigen Tutorial oder ein Buch lesen (ich weiß nicht remeber Quelle), dass sie standardmäßig von signed int-Typ sind. Ist das korrekt?

+0

Ja mit u (vorzeichenlos), h (kurz), l (lang). Schauen Sie es sich in einer Referenz an, da es die Grundlagen der Sprache bildet. (Das letzte enthält eine unzulässige 9, kleines x ist konventionell.) –

+0

@JoopEggen, Es gibt kein Standard-Suffix für 'short'. – chris

+0

@JoopEggen, 'short' wird nicht in Literalen verwendet (denke ich). – foxtrot9

Antwort

3

Der Typ des Integral-Literals wird weniger davon definiert, ob es sich um ein Hexadezimal-Literal, ein Dezimal-Literal oder ein Oktal-Literal und mehr um den Wert des Literals handelt.

Tabelle 6 - Typen von ganzzahligen Konstanten in Abschnitt 2.14.2 des C++ 11-Standards listet die Reihenfolge der Typen auf, die zum Erfassen eines ganzzahligen Literals verwendet werden.

Der Hauptunterschied zwischen dezimalen Literale und hexadezimale und oktale Literalen ist, dass die Reihenfolge der Arten von dezimalen Literale int ist, long, long long Während die Reihenfolge der Arten von hexadezimalen und oktalen Literale int ist, unsigned int, long, unsigned long, long long und unsigned long long.

+0

das bedeutet '0X123' ist int,' 0X4294967294' (2^32 -2) ist unsigniert int, '0X4294967297' (2^32 + 1) ist lang, '0123' ist int,' 042747672777' ist lang. (Betrachtet int von 32 Bit und lang von 64 Bit.) – foxtrot9

+0

@ foxtrot9 Sie verwechseln die Verwendung des Präfixes '0' und' 0x'. '0X4294967294' ist sicher nicht' 2 ** 32 - 2', es ist etwas viel größer. '0x123! = 123'. – Holt

+0

@Holt, Oh, ich habe es vergessen. Ich werde das ändern. – foxtrot9

Verwandte Themen