Se ho un enum
che non assegna numeri alle enumerazioni, il suo valore ordinale sarà 0? Per esempio:Le enumerazioni C++ iniziano da 0?
enum enumeration { ZERO,
ONE,
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE };
Sono stato in grado di trovare un post citing that the C99 standard requires a 0 ordinal number. Ma so che il C++ ignora molte cose nello standard C99. E sono anche riuscito a trovare uno post witnessing the compiler using an ordinal value of 1, qualcosa che mi sembra anche di ricordare, anche se non posso dire quanto tempo fa fosse.
mi piacerebbe davvero vedere una risposta che conferma questo per C++, ma mi piacerebbe anche sapere se un numero ordinale 0 vale anche se a specificare un valore nel bel mezzo di un enum
:
enum enumeration { ZERO,
ONE,
TWO,
THREE = 13,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE };
La prossima costante di enumerazione avrà sempre il valore della precedente nell'elenco. Quindi nel tuo caso otterresti '0, 1, 2, 13, 14, 15 ...'. Si noti che questo potrebbe creare duplicati. – Lundin
@Jonathan Mee Sarebbe molto strano se gli enumeratori in C++ opposti a C non inizino da 0. :) –
@VladfromMoscow Sono d'accordo, e ovviamente dalle risposte è il caso. Non riuscivo a trovare nulla che lo garantisse per C++. E non voglio continuare a specificare un ordinale 0 se non è necessario: S –