Welchen Datentyp hat das Zahlliteral 4711E-03?
-
siehe Titel
-
hm66 schrieb:
siehe Titel
int
-
double
-
Verflucht, so einfach?
Woran sehe ich das?
f am ende ist float, l ist long.. alles klar - aber hier?
-
Das siehst du daran, dass es eine Fließkommazahl ist und kein spezielles Suffix hat => double.
Kannst du aber ganz allgemein mittypeid(4711E-03).name()
herausfinden. Um das lesbarer zu machen, solltest du dann noch eine Demangling-Funktion über den Namen laufen lassen (für gcc-ähnliche Compiler__cxxabiv1::__cxa_demangle
).
-
hm66 schrieb:
Verflucht, so einfach?
Woran sehe ich das?
f am ende ist float, l ist long.. alles klar - aber hier?f/F = float
l/L = long bzw. long double
u/U = unsigned
ul/Ul/uL/UL = unsigned long
ull/Ull/uLL/ULL = unsigned long longKein Suffix bedeutet autom. int bzw double.
-
hm66 schrieb:
Verflucht, so einfach?
Woran sehe ich das?
f am ende ist float, l ist long.. alles klar - aber hier?Ein Zahlenliteral ist entweder vom int oder double, wenn du kein Suffix anigbst. Bis jetzt dachte ich immer, wenn da kein Punkt ist, ist ein int. Aber jez seh ich gerade, dass da E- steht... Hab grad nachgeschaut. Wissenschaftliche Schreibweise ist double. Also kannst es dir ganz einfach merken.
Zahl ohne Punkt und ohne wissenschaftliche Schreibweise
int
Zahl mit Punkt und/oder wissenschaftliche Schreibweisedouble
Einen anderen Typen bekommst du nur, wenn du einen Suffix benutzt.
-
dot schrieb:
Kein Suffix bedeutet autom. int bzw double.
Bei int-Literalen gilt das aber nur, wenn es auch passt. 1234567890 ist bei einem System mit 32-Bit Integern ein long. Oder wenn der long auch 32 Bit hat, dann ein long long (der hat garantiert 64 Bit). Wenn der Wert durch keinen der in Frage kommenden Typen darstellbar ist, dann ist das Programm "ill-formed" (das gilt dann auch für Fließkommaliterale).
-
Nur wissenschaftliche Schreibweise
auch double
So nun haben wirs
-
Stimmt, darauf hab ich vergessen, es ist autom int bzw. der nächst größere signed (dezimal) bzw. signed oder unsigned (hexadezimal und oktal) Typ, der die Zahl darstellen kann.
-
Kann ich einen von euch für meine Klausur buchen? ^^
Und wo ich euch grad hier hab...Weiß jemand, was für ein Anweisungstyp extern ist?
-
Weiß jemand, was für ein Anweisungstyp extern ist?
Das weiß hier jeder. Wie wäre es allerdings mit googlen?
-
dot schrieb:
es ist autom int bzw. der nächst größere signed (dezimal) bzw. signed oder unsigned (hexadezimal und oktal) Typ, der die Zahl darstellen kann.
Wenn es nicht in einen signed long long passt, dann kann es auch mal unsigned long long sein bei int-Literalen.
-
Arcoth schrieb:
Weiß jemand, was für ein Anweisungstyp extern ist?
Das weiß hier jeder. Wie wäre es allerdings mit googlen?
Ich glaub das wissen nicht viele.
Also was es macht ja, aber wie es genau heisst... pfuh.Bin mir nichtmal sicher ob ich den genauen Namen "weiss". Ich würde mal ungegoolelterweise auf "linkage specification" oder etwas in der Richtung tippen.
ps: Wobei es natürlich genaugenommen gar keine "Anweisung" ist
-
hustbaer schrieb:
Bin mir nichtmal sicher ob ich den genauen Namen "weiss". Ich würde mal ungegoolelterweise auf "linkage specification" oder etwas in der Richtung tippen.
Ich mein, der gehört wie static und früher auto zu den Speicherklassen - oder wie die Dinger heißen.
-
Nathan hatte schon Recht, es ist ein storage class specifier. Wie
static
.
-
Achje, ja, ne "linkage specification" wäre
extern
*string-literal
*.
-
Trotzdem gibt extern die Linkage an, paradox, oder?
-
hustbaer schrieb:
Achje, ja, ne "linkage specification" wäre
extern
*string-literal
*.Andererseits kann es auch in expliziten Instantiierungen auftreten.
Trotzdem gibt extern die Linkage an, paradox, oder?
Da gibt es genug im Standard, was von der Benennung keinen Sinn ergibt.