Kann mir jemand helfen, in den Standards (C99 und C++ 03) zu erkennen, was mit der Zeile darunter passiert?C/C++ Literale
uint16_t a = 5;
Also, auf der linken Seite ist die eingegebene Variable, auf der rechten Seite die wörtliche ist, wann und wie sich die wörtliche Wert den Typ der Variablen bekommen?
Ist die obige Zuordnung äquivalent zur folgenden Aussage?
uint16_t a = (uint16_t)5; /* C */
uint16_t a = reinterpret_cast<uint16_t>(5); // C++
Wie wäre:
uint16_t a = 5u;
Dann, wenn Sie so etwas wie haben:
uint32_t b = a + 5;
Ist die Aussage über das entspricht Erklärung unten?
uint32_t b = (uint32_t)(a + (uint16_t)(5)); /* C */
uint32_t b = reinterpret_cast<uint32_t>(a + reinterpret_cast<uint16_t>(5)); // C++
Ändern sich die Dinge in C11 und C++ 14? Nehmen Sie außerdem an, dass das System int 32 Bit ist.
Ich habe schon eine Weile in C programmiert, habe es aber nie richtig verstanden, aber es stört mich immer, also würde ich mich freuen, wenn mir jemand helfen kann, es zu klären.
Danke ...
(Herausgegeben: added Annahme, dass der int 32 Bit)
Nun endlich haben wir eine Frage markiert sowohl C und C++ und es ist ** tatsächlich ** bezogen auf beide :) – Eregrith
Das wäre 'static_cast' nicht' reininterpret_cast' (das ist nur für Konvertierungen mit Zeigern und Referenzen). –
'5' ist vom Typ' int' und '5u' ist vom Typ' unsigned int'. – user3528438