ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²ΠΎΠ²Π»Π΅ΠΊΠ°Π΅Ρ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°: ΡΠ°ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Π‘Π½Π°Π±ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Β«ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌΒ» const Π΄Π΅Π»Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½ΠΎ Π½Π΅ ΡΠ°ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
const char* pc = Β«asdfΒ»; // ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ pc[3] = 'a'; // ΠΎΡΠΈΠ±ΠΊΠ° pc = Β«ghjkΒ»; // ok
Π§ΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΌ const ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π° Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ const*. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
char *const cp = Β«asdfΒ»; // ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ cp[3] = 'a'; // ok cp = Β«ghjkΒ»; // ΠΎΡΠΈΠ±ΠΊΠ°
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ ΠΎΠ±Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΡ ΠΎΠ±Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ const. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
const char *const cpc = Β«asdfΒ»; // const ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° const cpc[3] = 'a'; // ΠΎΡΠΈΠ±ΠΊΠ° cpc = Β«ghjkΒ»; // ΠΎΡΠΈΠ±ΠΊΠ°
ΠΠ±ΡΠ΅ΠΊΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π½Π΅ΠΌΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡΡΡΠΏ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΡΡΠΌΠΈ. ΠΡΠΎ Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΊΠ°ΠΊ const ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
char* strcpy(char* p, const char* q); // Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ q
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½ΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΠ΅Π΄Π° ΠΎΡ ΡΡΠΎΠ³ΠΎ Π±ΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π°Π΄ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int a = 1; const c = 2; const* p1 = amp;c; // ok const* p2 = amp;a; // ok int* p3 = amp;c; // ΠΎΡΠΈΠ±ΠΊΠ° *p3 = 7; // ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ c
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠΈΠΏ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΎΠΏΡΡΠ΅Π½, ΡΠΎ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ int.
2.4.7 ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ
ΠΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π»ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π΅Π½, ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ const. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
enum (* ASM, AUTO, BREAK *);
ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΈ ΡΠ΅Π»ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠΌΠΈ, ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ 0 Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ, ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠΈ:
const ASM = 0; const AUTO = 1; const BREAK = 2;
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
enum keyword (* ASM, AUTO, BREAK *);
ΠΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ int, Π° Π½Π΅ Π½ΠΎΠ²ΡΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ keyword, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ int, ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
keyword key;
switch (key) (* case ASM: // ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ break; case BREAK: // ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ break; *)
ΠΏΠΎΠ±ΡΠΆΠ΄Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ keyword ΠΈΠ· ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ.
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ²Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
enum int16 (* sign=0100000, // Π·Π½Π°ΠΊ most_significant=040000, // ΡΠ°ΠΌΡΠΉ Π·Π½Π°ΡΠΈΠΌΡΠΉ least_significant=1 // Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°ΡΠΈΠΌΡΠΉ *);
Π’Π°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ, Π²ΠΎΠ·ΡΠ°ΡΡΠ°ΡΡΠΈΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ.
2.5 ΠΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
Π Ρ ΠΎΠ΄Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΎΠΊ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΏΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΏΡΡΠ΅Π½ΠΎ. ΠΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° Π²ΡΠΆΠ°ΡΡ ΠΏΠΎΠ±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ:
1. ΠΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΠ°Π·Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ, Π²ΡΠΎΡΠΎΠ³ΠΎ β ΡΠ΅ΡΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. ΠΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ . ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΡΠΈΡΡΠΎ Π² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΎΠ½ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π΅ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π²Π°ΠΆΠ΄Ρ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ . Π§Π°ΡΡΠΎ Π»ΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΌΡΡΡ (#3.2.6) ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π½Π° Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ.
2.5.1 ΠΠΎΠ»Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ char Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½ΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ/Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠΊΡΡΡΠ°Π²Π°Π³Π°Π½ΡΠ½ΡΠΌ, Π½ΠΎ char ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π‘++ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ. ΠΠΎΠΆΠ½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΡ ΠΊΡΠΎΡΠ΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»Π΅ΠΉ struct. Π§Π»Π΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅ ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΈΡΠ»Π° Π±ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ. ΠΠΎΠΏΡΡΡΠΈΠΌΡ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ; ΠΎΠ½ΠΈ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΌΡΡΠ» ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΎ Π½Π΅ΠΊΠΈΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅:
struct sreg (* unsigned enable : 1; unsigned page : 3; unsigned : 1; // Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ unsigned mode : 2; unsigned : 4: // Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ unsigned access : 1; unsigned length : 1; unsigned non_resident : 1; *)
ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° 0 ΡΠΎΡΡΠΎΡΠ½ΠΈΡ DEC PDP11/45 (Π² ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠ»Ρ Π² ΡΠ»ΠΎΠ²Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ). ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ: ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈ Π²Π½Π΅ΡΠ½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΡΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ»Ρ. Π ΡΠ΄ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅ ΡΠΈΠΏ sreg ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
sreg* sr0 = (sreg*)0777572; //... if (sr-Β»access) (* // Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° // ΡΠΈΡΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ² sr-Β»access = 0; *)
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΠ½ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ, Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΡΡΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΌΠ°ΡΠΈΠ½ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ. ΠΠ·Π²Π΅ΡΡΠ½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΆΠΈΠΌΠ°Π»ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π»ΠΈΡΡ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Π±ΠΈΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»Ρ! ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΠΎΡΡΡΠΏ ΠΊ char ΠΈΠ»ΠΈ int ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΠ»Ρ. ΠΠΎΠ»Ρ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΠΈ ΠΊΡΠ°ΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΠ΅Π»ΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· ΡΠ°ΡΡΠΈ ΡΠ»ΠΎΠ²Π° ΠΈΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Π½Π΅Π΅.
2.5.2 ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠΎΠΉ, Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΡΠΌ:
struct entry (* char* name; char type; char* string_value; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 's' int int_value; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 'i' *);
void print_entry(entry* p) (* switch p-Β»type (* case 's': cout Β«β p-βstring_value; break; case 'i': cout ββ p-βint_value; break; default: cerr «« Β«ΠΈΡΠΏΠΎΡΡΠ΅Π½ type\nβ; break; *) *)
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ string_value ΠΈ int_value Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΠΏΡΡΡΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΡΠΊΠ°Π·Π°Π², ΡΡΠΎ ΠΎΠ±Π° ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ union. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
struct entry (* char* name; char type; union (* char* string_value; //ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 's' int int_value; //ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 'i' *); *);
ΠΡΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ entry, Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ entry string_value ΠΈ int_value ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π°Π΄ΡΠ΅Ρ. ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π»ΠΈΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ»Π΅Π½.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΡΡ ΡΠΎΡ ΡΠ»Π΅Π½, Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π»ΠΎΡΡ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π΅ΠΏΡΠΎΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΡΠ»ΠΎΠ²ΠΈΠΌΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ @ΠΊΠ°ΠΏΡΡΠ»Π·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»Π΅ΠΌ ΡΠΈΠΏΠ° ΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠ»Π΅Π½ΠΎΠ² Π±ΡΠ»ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ (#5.4.6).
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ Β«ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ°Β» (ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π²ΠΎΡΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΠ·ΡΠΊΠ°Ρ , Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², Π³Π΄Π΅ ΠΆΡΠ»ΡΠ½ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Β«ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΒ» Π½Π° VAX'Π΅ int Π² int*, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΡ:
struct fudge (* union (* int i; int* p; *); *);
fudge a; a.i = 4096; int* p = a.p; // ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅: Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ int ΠΈ int* Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π½Π΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΌΡΡΠΈ, Π° Π½Π° Π΄ΡΡΠ³ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ. Π’Π°ΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π½Π΅ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎ, Π° Π΅ΡΡΡ ΡΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° (#3.2.5).