Eine Aufzählung besteht darin, alle möglichen Werte einer Sache einzeln aufzulisten
Es gibt nur wenige mögliche Werte für eine Variable. Beispielsweise hat der Wochentag nur Montag, Dienstag, dritten, vierten, fünften und sechsten Tag.
Definieren Sie einen Aufzählungstyp und dann eine Variable dieses Typsw
:
#include <stdio.h>
enum WeekDay {
sun,mon,tues,wed,thur,fri,sat};
int main(void)
{
enum WeekDay w;
return 0;
}
Einige Eigenschaften von Aufzählungen:
-
Nehmen Sie den Wochentag als Beispiel. Im folgenden Code konvertiert der Compiler
sun
,mon
,tues
, Die Werte von a>wed
,thur
,fri
undsat
Standardmäßig 0, 1 und 2 in der Reihenfolge. ,3,4,5,6:#include <stdio.h> enum WeekDay { sun,mon,tues,wed,thur,fri,sat}; int main(void) { enum WeekDay w; w = mon; printf("w = %d\n",w);//输出结果:w = 1 return 0; }
Es ist erwähnenswert, dass beim Zuweisen eines anderen Werts als des w-Enumerationselements (z. B.
w = 'a'
oderw = 10;
usw.) der Compiler nicht Es wird kein Fehler gemeldet (ich verwende den gcc-Compiler) und der Wert von w kann normal ausgegeben werden. -
Die Standardwerte von Aufzählungselementen können geändert werden:
#include <stdio.h> enum WeekDay { sun=7, mon,tues,wed,thur,fri,sat}; int main(void) { enum WeekDay w; w = sun; printf("w = %d\n",w);//输出结果:w = 7 return 0; }
Der obige Code ändert den Standardwert des Aufzählungselements
sun
auf 7, dann und < nachsun
Der Wert von /span> Die Standardwerte werden ebenfalls 8, 9, 10, 11 und 12, , , ,mon
tues
wed
thur
fri
sat
-
Wenn Sie nur den Standardwert eines der Aufzählungselemente in der Mitte ändern:
#include <stdio.h> enum WeekDay { sun, mon,tues,wed=13, thur,fri,sat}; int main(void) { enum WeekDay w; w = sun; printf("w = %d\n",w);//输出结果:w = 0 w = thur; printf("w = %d\n",w);//输出结果:w = 14 return 0; }
-
Zwei
enum
Typen können keine doppelten Aufzählungselemente haben:#include <stdio.h> enum WeekDay1{ sun,mon,tues,wed}; enum WeekDay2{ wed,thur,fri,sat}; int main(void) { enum WeekDay1 w1; enum WeekDay2 w2; w1 = mon; w2 = sat; return 0; }
Der obige Code meldet einen Fehler:
error: redeclaration of enumerator 'wed'
-
Am Beispiel des Wochentags können Sie bei der Definition auch Variablen wie eine Struktur oder Union direkt definieren (dies wird jedoch im Allgemeinen nicht empfohlen):
#include <stdio.h> enum WeekDay { sun,mon,tues,wed,thur,fri,sat}w1,w2; int main(void) { w1 = mon; w2 = sun; return 0; }
Wenn Sie die Variable direkt wie im obigen Code definieren, kann der Name nach der Aufzählung ignoriert werden (dies wird im Allgemeinen nicht empfohlen):
#include <stdio.h> enum { sun,mon,tues,wed,thur,fri,sat}w1,w2; int main(void) { w1 = mon; w2 = sun; return 0; }