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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π‘++ Π·Π° 21 дСнь.Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 12

Автор ДТСсс Π›ΠΈΠ±Π΅Ρ€Ρ‚ΠΈ

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ ΠΈ числа

Если ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ символ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "Π°", Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° char, Ρ‚ΠΎ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ число, Π»Π΅ΠΆΠ°Ρ‰Π΅Π΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 0 ΠΈ 255. Однако компилятор Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ символов ΠΊ ΠΈΡ… Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ эквивалСнтам Π² ASCII ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π’Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ числом ΠΈ Π±ΡƒΠΊΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ вСсомой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для присваивания строчной Π±ΡƒΠΊΠ²Π΅ "Π°" ΠΈΠΌΠ΅Π½Π½ΠΎ значСния 97. Если всС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° (ваша ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, компилятор ΠΈ экран) с этим "согласны", Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚. Однако Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 5 ΠΈ символом "5" большая Ρ€Π°Π·Π½ΠΈΡ†Π°. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρƒ "5" Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ соотвСтствуСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 53, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π±ΡƒΠΊΠ²Π΅ "Π°" соотвСтствуСт число 97.

Листинг 3.6. Π’Ρ‹Π²ΠΎΠ΄ Π½Π° Π·ΠΊΡ€Π°Π½ символов ΠΏΠΎ ΠΈΡ… значСниям.

1: #include <iostream.h>

2: int main()

3: {

4:    for (int i = 32;   i<128;   i++)

5:    cout <<  (char)  i;

6:    return 0;

7: }


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

!"#$%'()*+,./0123456789:;<> [email protected]

_QRSTUVWXYZ[\]"`abcdefghijklmnopqrstuvwxyz{|{~


Π­Ρ‚Π° простая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ символы, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»Π΅ΠΆΠ°Ρ‚ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 32β€”127.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C++ распознаСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для форматирования тСкста. (Π‘Π°ΠΌΡ‹Π΅ распространСнныС ΠΈΠ· Π½ΠΈΡ… прСдставлСны Π² Ρ‚Π°Π±Π». 3.2.) Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ эти символы Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ символом Π½Π°Ρ‡Π°Π»Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½ΠΈΠΌ символы являСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ символ табуляции, Π½ΡƒΠΆΠ½ΠΎ ввСсти ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш, Π±ΡƒΠΊΠ²Ρƒ t ΠΈ снова ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ:

char tabCharacter = '\t';

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная Ρ‚ΠΈΠΏΠ° char (с ΠΈΠΌΠ΅Π½Π΅ΠΌ tabCharacter), которая Ρ‚ΡƒΡ‚ ΠΆΠ΅ инициализируСтся ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ \t, распознаваСмым ΠΊΠ°ΠΊ символ табуляции. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы форматирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° экран, Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ устройство Π²Ρ‹Π²ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€).

Π‘ΠΈΠΌΠ²ΠΎΠ» Π½Π°Ρ‡Π°Π»Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ символа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт Π·Π° Π½ΠΈΠΌ. НапримСр, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ символ n ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π±ΡƒΠΊΠ²Ρƒ я, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΉ стоит символ Π½Π°Ρ‡Π°Π»Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (\), Ρ‚ΠΎ ΠΎΠ½ прСвращаСтся Π² символ Ρ€Π°Π·Ρ€Ρ‹Π²Π° строки.


Π’Π°Π±Π»ΠΈΡ†Π° 3.2. Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹

Подобно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, константы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ячСйки памяти, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Но, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, константы Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ (ΠΎ Ρ‡Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ само Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β€” константа). Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡƒΡŽ константу Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ·ΠΆΠ΅ Π΅ΠΉ нСльзя ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅,

Π’ языкС C++ прСдусмотрСно Π΄Π²Π° Ρ‚ΠΈΠΏΠ° констант: Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅.

Π›ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ константы

Π›ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Π°Ρ константа β€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, нСпосрСдствСнно Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π² самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. НапримСр, Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ


int myAge = 39;


myAge являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° int, Π° число 39 β€” Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ константой. НСльзя ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константС 39.

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы

Бимвольная константа β€” это константа, прСдставлСнная ΠΈΠΌΠ΅Π½Π΅ΠΌ (Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π΅ΠΌ прСдставляСтся любая пСрСмСнная). Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ константы ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСльзя.

Если Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° цСлочислСнная пСрСмСнная с ΠΈΠΌΠ΅Π½Π΅ΠΌ students, Π° другая β€” с ΠΈΠΌΠ΅Π½Π΅ΠΌ classes, Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ количСство ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² ΡˆΠΊΠΎΠ»Ρ‹ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ извСстно, сколько классов Π² школС ΠΈ сколько ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ классС (допустим, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс состоит ΠΈΠ· 15 ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ²):


students = classes * 15;


ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:Π‘ΠΈΠΌΠ²ΠΎΠ» (*) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ число 15 являСтся Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ константой. Но Ссли эту Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ константу Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символьной, Ρ‚ΠΎ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ:


students = classes * studentsPerClass


Если впослСдствии потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ количСство ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ классС, Π²Ρ‹ смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹ Π² Ρ‚ΠΎΠΉ строкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ опрСдСляСтся константа studentsPerClass, ΠΈ Π²Π°ΠΌ Π½Π΅ придСтся Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π²ΠΎ всС строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ языкС C++ сущСствуСт Π΄Π²Π° способа объявлСния символьной константы. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΈ Π½Ρ‹Π½Π΅ ΡƒΠΆΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ способ состоит Π² использовании Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ прСпроцСссора #define.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ констант с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #deiine

Для опрСдСлСния константы Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ способом Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:


#define studentsPerClass 15


ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ константа studentsPerClass Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (int, char ΠΈ Ρ‚.Π΄.). Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define выполняСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ подстановку. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° прСпроцСссор встрСчаСт слово studentsPerClass, ΠΎΠ½ замСняСт Π΅Π³ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ 15.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ прСпроцСссор запускаСтся ΠΏΠ΅Ρ€Π΅Π΄ компилятором, послСдний Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ константу, Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ число 15.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ констант с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова const

Π₯отя Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define ΠΈ справляСтся со своими обязанностями, Π² языкС C++ сущСствуСт Π½ΠΎΠ²Ρ‹ΠΉ, Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ опрСдСлСния констант:


const unsigned short int studentsPerClass = 15;


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ символичСская константа с ΠΈΠΌΠ΅Π½Π΅ΠΌ studentsPerClass, Π½ΠΎ Π½Π° сСй Ρ€Π°Π· для этой константы задаСтся Ρ‚ΠΈΠΏ unsigned short int. Π­Ρ‚ΠΎΡ‚ способ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько прСимущСств, облСгчая Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ прСдотвращая появлСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ошибок. Π‘Π°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ этой константы ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ (объявлСнной с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #define) состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΈ компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π΅Π΅ использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (Ρ‚.Π΅. Π² соотвСтствии с ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ).


ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:Π’ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ константы ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ нСльзя. Если ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, константы studentsPerClass, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ объявлСниС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅.


РСкомСндуСтся:Π‘Π»Π΅Π΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π»ΠΈ допустимый ΠΏΡ€Π΅Π΄Π΅Π». ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ осмыслСнныС ΠΈΠΌΠ΅Π½Π°, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏΡ‹ short ΠΈ long, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.


НС рСкомСндуСтся: НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² качСствС ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ пСрСчислСний

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ этих Ρ‚ΠΈΠΏΠΎΠ², значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π½Π°Π±ΠΎΡ€ΠΎΠΌ константных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ C0L0R ΠΊΠ°ΠΊ пСрСчислСниС ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ для Π½Π΅Π³ΠΎ ΠΏΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: RED, BLUE, GREEN, WHITE И BLACK.

Для создания пСрСчислСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово enum, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚: имя Ρ‚ΠΈΠΏΠ°, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ фигурная скобка, список константных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми, Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ фигурная скобка ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой. НапримСр:


enum COLOR { RED, BLUE, GREEN, WHITE, BLACK };


Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выполняСт Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

1. Π‘оздаСтся пСрСчислСниС с ΠΈΠΌΠ΅Π½Π΅ΠΌ C0L0R, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Π½ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ.

2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ся ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы: RED со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0; BLUE со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1; GREEN со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 2 ΠΈ Ρ‚.Π΄.

КаТдой константС пСрСчислСния соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пСрвая константа инициализируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0, Π° каТдая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большим ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Однако Π»ΡŽΠ±ΡƒΡŽ константу ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΈ Π² этом случаС явно Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ константы ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, взяв Π·Π° Ρ‚ΠΎΡ‡ΠΊΡƒ отсчСта Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, стоящСС ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ


enum Color { RED=100, BLUE, GREEN=500, WHITE, BLACK=700 };


Ρ‚ΠΎ константа red Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100; константа blue β€” 101; константа GREEN β€” 500; константа WHITE β€” 501; константа BLACK β€” 700.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° C0L0R, Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· пСрСчислимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС RED, BLUE, GREEN, WHITE ΠΈΠ»ΠΈ BLACK Π»ΠΈΠ±ΠΎ 100, 101, 500, 501 ΠΈΠ»ΠΈ 700). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ C0L0R ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π°. На самом Π΄Π΅Π»Π΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ любоС Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΎ Π½Π΅ соотвСтствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ², Π½ΠΎ Π² этом случаС ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹ΠΉ компилятор Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·ΠΌΡƒΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ пСрСчислСния Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ unsigned int ΠΈ цСлочислСнным ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ константы пСрСчислСния. Однако ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ, днями Π½Π΅Π΄Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ эти значСния ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π’ листингС 3.7 прСдставлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ пСрСчислСния.