J'ai quelques anciens souvenirs de l'écriture de code C comme:Suffixe long et suffixe non signé requis lors de la déclaration de littéraux longs en C++?
long value = 0;
dans les mauvais jours Win16 et se terminant avec value
étant seulement une demi-initialisés: à savoir les 16 bits inférieurs étaient 0
et les 16 bits supérieurs étaient quels que soient les bits aléatoires à cet endroit en mémoire. En tant que tel, je me suis conditionné à écrire:
long value = 0L;
Est-ce encore nécessaire en ce jour et l'âge en C99 et/ou C++? Je sais que ILP32 spécifie que int
et long
sont tous deux 32 bits, mais supposons que nous utilisons, par exemple, LP64 où int
sont 32 bits et long
s sont 64 bits. Les suffixes sont-ils requis ou est-ce que les formes modernes de C et C++ étendront implicitement les littéraux à la longueur de la variable à laquelle ils sont assignés?
Que diriez-vous des valeurs non signées? C'est à dire. Est-ce nécessaire?
unsigned long value = 0UL;
Copie possible de [quelle est la raison de la déclaration explicite de L ou UL pour les valeurs longues] (https://stackoverflow.com/questions/13134956/what-is-the-reason-for-explicitly-declaring-l- ou-ul-for-long-values) –