Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор C. Π‘ΠΎΡ‡ΠΊΠΎΠ²

МоТно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ объявлСнии, задавая список <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²>, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€> Π² спискС ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°ΠΊΠΎΠΌ объявлСнии, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

int Ρ…; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

unsigned long reply, flag; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

double order; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ простая пСрСмСнная Ρ…. Π­Ρ‚Π° пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· области Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: reply ΠΈ flag. ОбС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ unsigned long.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ объявлСна пСрСмСнная order, которая ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ double. Π­Ρ‚ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ присвоСны значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ°

Бинтаксис:

enum [<Ρ‚Π΅Π³>]{<список-пСрСчислСния>} <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ>[,<ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ>…];

enum <Ρ‚Π΅Π³> <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€> [<ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€>…];

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ° Π·Π°Π΄Π°Π΅Ρ‚ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ опрСдСляСт список ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… констант, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ списком пСрСчислСния. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту списка пСрСчислСния ставится Π² соотвСтствиС Ρ†Π΅Π»ΠΎΠ΅ число. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния ΠΈΠ· своСго списка пСрСчислСния. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ списка ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ int. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ° выдСляСтся ячСйка памяти, нСобходимая для размСщСния значСния Ρ‚ΠΈΠΏΠ° int. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, прСдставляСт собой подмноТСство Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Над ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

<ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> спСцифицируСт Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ пСрСчислимого Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСчислимого Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ массив элСмСнтов пСрСчислимого Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСчислимого Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ пСрСчислСнных Ρ‚ΠΈΠΏΠΎΠ².

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ° начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова enum ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ прСдставлСния.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ задаСтся список пСрСчислСния, содСрТащий ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ константы. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ <Ρ‚Π΅Π³> β€” это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ пСрСчислимый Ρ‚ΠΈΠΏ, спСцифицированный Π΄Π°Π½Π½Ρ‹ΠΌ списком пСрСчислСния, <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€> β€” это имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ°. Π’ ΠΎΠ΄Π½ΠΎΠΌ объявлСнии ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ описано Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ пСрСчислимого Ρ‚ΠΈΠΏΠ°.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ объявлСния список пСрСчислСния отсутствуСт, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ <Ρ‚Π΅Π³>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° пСрСчислимый Ρ‚ΠΈΠΏ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ ссылаСтся Π½Π° нСизвСстный пСрСчислимый Ρ‚ΠΈΠΏ Π»ΠΈΠ±ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия опрСдСлСния этого пСрСчислимого Ρ‚ΠΈΠΏΠ° Π½Π΅ распространяСтся Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ, Ρ‚ΠΎ компилятор языка Π‘ΠΈ сообщаСт ΠΎΠ± ошибкС. Π”ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ объявлСниС указатСля Π½Π° пСрСчислимый Ρ‚ΠΈΠΏ ΠΈ объявлСниС typedef для пСрСчислимого Ρ‚ΠΈΠΏΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Π³ Ρ€Π°Π½Π΅Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ пСрСчислимого Ρ‚ΠΈΠΏΠ°. Однако этот Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ использования этого Ρ‚Π΅Π³Π° ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ°, объявлСнного посрСдством typedef.

<Бписок-пСрСчислСния> содСрТит ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ конструкций Π²ΠΈΠ΄Π°:

<ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€> [=<константноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>]

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π² спискС Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ запятыми. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€> ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ элСмСнт списка пСрСчислСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ <константноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>, ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту—значСниС 1 ΠΈ Ρ‚. Π΄. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ списка пСрСчислСния являСтся константой.

Π—Π°ΠΏΠΈΡΡŒ =<константноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> измСняСт ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ записи =<константноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ этим константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ int ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт списка ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ <константноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>+1, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ задаСтся явно Π΄Ρ€ΡƒΠ³ΠΈΠΌ константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’ спискС пСрСчислСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сопоставлСны ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² спискС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ. НапримСр, Π΄Π²ΡƒΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌ null ΠΈ zero ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ спискС пСрСчислСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ элСмСнта списка пСрСчислСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² элСмСнтов всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… списков пСрСчислСний с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия (см. Ρ€Π°Π·Π΄Π΅Π» 2.5). Π’Π΅Π³ пСрСчислимого Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Ρ‚Π΅Π³ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… пСрСчислимых Ρ‚ΠΈΠΏΠΎΠ², структур ΠΈ объСдинСний с Ρ‚ΠΎΠΉ ΠΆΠ΅ самой ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

enum day {

SATURDAY,

SUNDAY = 0,

MONDAY,

TUESDAY,

WEDNESDAY,

THURSDAY,

FRIDAY

} workday;


/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

enum day today = WEDNESDAY;

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСчислимый Ρ‚ΠΈΠΏ опрСдСляСтся списком. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ имСнуСтся Ρ‚Π΅Π³ΠΎΠΌ day, ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная workday этого пСрСчислимого Ρ‚ΠΈΠΏΠ°. Π‘ элСмСнтом SATURDAY ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ассоциируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ SUNDAY явно присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ноль. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 1 Π΄ΠΎ 5.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная пСрСчислимого Ρ‚ΠΈΠΏΠ° today инициализируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· элСмСнтов списка пСрСчислСния. Π’Π°ΠΊ ΠΊΠ°ΠΊ пСрСчислимый Ρ‚ΠΈΠΏ с Ρ‚Π΅Π³ΠΎΠΌ day Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ объявлСн, Ρ‚ΠΎ ΠΏΡ€ΠΈ объявлСнии today достаточно ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚Π΅Π³ day, Π½Π΅ записывая ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ сам список пСрСчислСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ языкС Π‘ΠΈ принято Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° элСмСнтов пСрСчислСния прописными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ это Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

ОбъявлСниС структуры

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Однако Π² языкС Π‘ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ структурами ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ: ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² качСствС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ адрСса. МоТно ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ структуру Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅Π³.

Бинтаксис:

struct [<Ρ‚Π΅Π³>] {<список-объявлСний-элСмСнтов>} <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> [,<ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ>…];

struct <Ρ‚Π΅Π³> <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> [,<ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ>…];

ОбъявлСниС структуры ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ имя структурного Ρ‚ΠΈΠΏΠ° ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ объявлСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… элСмСнтами структуры. Π­Ρ‚ΠΈ элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

ОбъявлСниС структуры начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова struct ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ записи, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΈΠΌΠ΅Π½Π° элСмСнтов структуры ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² спискС объявлСний элСмСнтов. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС <Ρ‚Π΅Π³> β€” это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ структурный Ρ‚ΠΈΠΏ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π΄Π°Π½Π½Ρ‹ΠΌ списком объявлСний элСмСнтов.

<ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> спСцифицируСт Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ структурного Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ массив структур Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ структуру Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ пСрСчислСнных Ρ‚ΠΈΠΏΠΎΠ².

Вторая синтаксичСская Ρ„ΠΎΡ€ΠΌΠ° объявлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Π³ структуры для ссылки Π½Π° структурный Ρ‚ΠΈΠΏ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π³Π΄Π΅-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этой Ρ„ΠΎΡ€ΠΌΠ΅ объявлСния список объявлСний элСмСнтов отсутствуСт. ОбъявлСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² области дСйствия Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π°, Ρ‚. Π΅. ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структурного Ρ‚ΠΈΠΏΠ°, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Π΅Π³ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ объявлСнию, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ этот Ρ‚Π΅Π³, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… случаСв: ΠΊΠΎΠ³Π΄Π° Ρ‚Π΅Π³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объявлСния Π»ΠΈΠ±ΠΎ указатСля Π½Π° структуру, Π»ΠΈΠ±ΠΎ структурного Ρ‚ΠΈΠΏΠ° Π² typedef. Однако ΠΏΡ€ΠΈ этом ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структурного Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ использованию Π΄Π°Π½Π½ΠΎΠ³ΠΎ указатСля Π»ΠΈΠ±ΠΎ Ρ‚ΠΈΠΏΠ°, объявлСнного посрСдством typedef.

Бписок объявлСний элСмСнтов прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ объявлСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ (см. Π½ΠΈΠΆΠ΅). КаТдая пСрСмСнная, объявлСнная Π² этом спискС, называСтся элСмСнтом структуры. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ синтаксиса объявлСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² спискС состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ спСцификаций класса памяти ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ². Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ структуры ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ массивом, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, объСдинСниСм ΠΈΠ»ΠΈ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, структурой.