Ich habe einige alte Erinnerungen an C-Code zu schreiben wie:Sind Long-Suffix und Unsigned-Suffix erforderlich, wenn lange Literale in C++ deklariert werden?
long value = 0;
in den schlechten alten Win16 Tage und enden mit value
nur halb initialisiert wird: dh die unteren 16 Bits waren 0
und die oberen 16 Bits waren was auch immer zufällige Bits an diesem Ort im Speicher waren.
long value = 0L;
Ist dies erforderlich noch in diesem Tag und Alter unter C99 und/oder C++: schreiben als solche wurde ich konditioniert? Ich weiß, dass ILP32 spezifiziert, dass int
und long
beide 32-Bit sind, aber angenommen, wir verwenden, sagen wir, LP64 wo int
s sind 32-Bit und long
s sind 64-Bit. Sind die Suffixe erforderlich oder werden die modernen Formen von C und C++ Literale implizit auf die Länge der Variablen erweitern, der sie zugewiesen sind?
Wie wäre es mit vorzeichenlosen Werten? I.e. ist das erforderlich?
unsigned long value = 0UL;
Mögliche Duplikate von [was ist der Grund für die explizite Deklaration von L oder UL für lange Werte] (https://stackoverflow.com/questions/13134956/what-is-the-reason-for-explicitly-declaring-l- Oder-ul-for-long-Werte) –