extern complex sqrt(complex); extern int error_number; struct user;
Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π³Π΄Π΅-ΡΠΎ Π΅ΡΠ΅. ΠΠΎΠ΄ (ΡΠ΅Π»ΠΎ) ΡΡΠ½ΠΊΡΠΈΠΈ sqrt Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Π½Π΅ΠΊΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ, ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ error_number ΡΠΈΠΏΠ° int Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ Π½Π΅ΠΊΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° user Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ. Π Π‘++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Π²ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ Ρ ΡΠΈΠΏΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΡΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ Π΅ΡΡΡ Π΄Π²Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ:
int count; int count; // ΠΎΡΠΈΠ±ΠΊΠ°: ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ extern int error_number; extern int error_number; // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
Π° Π² ΡΡΠΎΠΌ β Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ (ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ extern ΡΠΌ. #4.2):
extern int error_number; extern int error_number;
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π·Π°Π΄Π°ΡΡ Β«Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β» Π΄Π»Ρ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ:
struct complex (* float re, im; *); typedef complex point; float real(complex* p) (* return p-Β»re *); const double pi = 3.1415926535897932385;
ΠΠ»Ρ ΡΠΈΠΏΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Β«Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β» Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ. ΠΠ»Ρ Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ:
int count = 1; char* name = Β«BjarneΒ»; //... count = 2; name = Β«MarianΒ»;
ΠΠ· Π²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ
char ch;
Π½Π΅ Π·Π°Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π·Π°Π΄Π°ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ.
2.1.1 ΠΠ±Π»Π°ΡΡΡ ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ ΠΈΠΌΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π’ΠΎ Π΅ΡΡΡ, ΠΈΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ ΠΈΠΌΠ΅Π½ΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΠ°ΠΊΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ), ΡΡΠ° ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΡΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠ»Ρ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π½Π΅ Π² ΠΊΠ»Π°ΡΡΠ΅ (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ) ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΡΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π² Π±Π»ΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΡΡΠ²Π°ΡΡ (ΠΏΡΡΡΠ°ΡΡ) ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΠΌΡ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· Π±Π»ΠΎΠΊΠ° ΠΈΠΌΡ Π²Π½ΠΎΠ²Ρ ΠΎΠ±ΡΠ΅ΡΠ°Π΅Ρ ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int x; // Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ x
f() (* int x; // Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ x ΠΏΡΡΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ x x = 1; // ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ x (* int x; // ΠΏΡΡΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ x x = 2; // ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π²ΡΠΎΡΠΎΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ x *) x = 3; // ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ x *)
int* p = amp;x; // Π²Π·ΡΡΡ Π°Π΄ΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ x
Π‘ΠΎΠΊΡΡΡΠΈΠ΅ ΠΈΠΌΠ΅Π½ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΈΡΠ°ΡΡΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈΠΌΡ ΡΠΊΡΡΡΠΎ, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ,
ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ΅Π΄ΠΊΠΈΠ΅. ΠΠ½Π°ΡΠΈΡ ΡΠΎΠΊΡΡΡΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠΌΠ΅Π½ Π²ΡΠΎΠ΄Π΅ i ΠΈΠ»ΠΈ x Π½Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π½Π° Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΠΈ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ :: ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΡΡΡΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int x;
f() (* int x = 1; // ΡΠΊΡΡΠ²Π°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ x ::x = 2; // ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌΡ x *)
ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΡΡΡΠΎΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ Π½Π΅Ρ.
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π² ΡΠΎΡΠΊΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int x;
f() (* int x = x; // ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ *)
ΠΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ, Ρ ΠΎΡΡ ΠΈ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡ, ΡΡΠΎ x Β«used before setΒ» (Β«ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°Π΄Π°Π½ΠΎΒ»), Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ ΡΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΎΡΠΈΠ², Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ::, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠΌΡ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π±Π»ΠΎΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int x;
f() // ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ (* int y = x; // Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ x int x = 22; y = x; // Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ x *)
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ y ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ x, 11, Π° Π·Π°ΡΠ΅ΠΌ Π΅ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ x, 22.
ΠΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π² ΡΠ°ΠΌΠΎΠΌ Π²Π½Π΅ΡΠ½Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ
f(int x) (* int x; // ΠΎΡΠΈΠ±ΠΊΠ° *)
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ x ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ.
2.1.2 ΠΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΠΠ΄ΡΠ΅ΡΠ° (Lvalue)
ΠΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°ΡΠ°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΈΠΌΠ΅Π½, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ ΡΡΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, *p[a+10]=7). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ Β«Π½Π΅ΡΡΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈΒ». ΠΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΠΈΡΠ°ΡΠ° ΠΈΠ· ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Π‘++: "ΠΠ±ΡΠ΅ΠΊΡ Π΅ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ.
lvalue Π΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΡΠ»Π°ΡΡΠ΅Π΅ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ" (#Ρ.5). Π‘Π»ΠΎΠ²ΠΎ Β«lvalueΒ» ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½ΠΎ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«Π½Π΅ΡΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡΒ». ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΡΠΊΠΎΠ΅ lvalue ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ; Π±ΡΠ²Π°ΡΡ lvalue, ΡΡΡΠ»Π°ΡΡΠΈΠ΅ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ (ΡΠΌ. #2.4).
2.1.3 ΠΡΠ΅ΠΌΡ ΠΠΈΠ·Π½ΠΈ
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π» ΠΈΠ½ΠΎΠ³ΠΎ, ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΈΠΌΡ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΠ±ΡΠ΅ΠΊΡΡ Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· (ΡΠΎΠ»ΡΠΊΠΎ) ΠΈ Β«ΠΆΠΈΠ²ΡΡΒ» Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ±ΡΠ΅ΠΊΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ static, Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ*:
β * ΠΠΎΠΌΠ°Π½Π΄Π° #include Β«stream.hΒ» Π±ΡΠ»Π° Π²ΡΠ±ΡΠΎΡΠ΅Π½Π° ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΌΠ΅ΡΡΠ°. ΠΠ½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΏΠΎΠ»Π½ΡΠΌΠΈ. (ΠΏΡΠΈΠΌ. Π°Π²ΡΠΎΡΠ°)
int a = 1;
void f() (* int b = 1; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ // Π²ΡΠ·ΠΎΠ²Π΅ f() static int c = 1; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· cout Β«β " a = " «« a++ «« " b = " «« b++ «« " c = " «« c++ «« Β«\nβ; *)
main() (* while (a Β« 4) f(); *)
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π²ΡΠ²ΠΎΠ΄
a = 1 b = 1 c = 1 a = 2 b = 1 c = 2 a = 3 b = 1 c = 3
ΠΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ²Π½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ (static) ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ΡΠ²Π½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½ΡΠ»Π΅ΠΌ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ new ΠΈ delete ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠΌ. #3.2.4.
2.2 ΠΠΌΠ΅Π½Π°
ΠΠΌΡ (ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ) ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΡΠΊΠ² ΠΈ ΡΠΈΡΡ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±ΡΠΊΠ²ΠΎΠΉ. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ° _ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π±ΡΠΊΠ²ΠΎΠΉ. Π‘++ Π½Π΅ Π½Π°Π»Π°Π³Π°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠΈΡΠ»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΈΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Π½Π΅ Π²Π΅Π΄Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ), ΠΈ ΠΎΠ½ΠΈ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π°Π»Π°Π³Π°ΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ΅. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΠΈ Π² ΠΈΠΌΠ΅Π½Π°Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° $) ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ Π½Π΅ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π‘++ (ΡΠΌ. #Ρ.2.3). ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½:
hello this_is_a_most_unusially_long_name DEFINED foO bAr u_name HorseSense var0 var1 CLASS _class ___
ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ:
012 a fool $sys class 3var pay.due foo~bar .name if
ΠΡΠΊΠ²Ρ Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Count ΠΈ count β ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΈΠΌΠ΅Π½Π°, Π»ΠΈΡΡ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΌΠ΅Π½Π°, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ°, ΠΏΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠ΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ var10 β ΡΡΠΎ ΠΎΠ½ΠΎ ΠΈΠΌΡ, Π° Π½Π΅ ΠΈΠΌΡ var, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ 10, ΠΈ elseif β ΠΎΠ΄Π½ΠΎ ΠΈΠΌΡ, Π° Π½Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ else, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ if.
2.3 Π’ΠΈΠΏΡ
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠΌΡ (ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ) Π² Π‘++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ Π½ΠΈΠΌ ΡΠΈΠΏ. ΠΡΠΎΡ ΡΠΈΠΏ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ (ΡΠΎ Π΅ΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ΠΎ ΡΡΡΠ»Π°Π΅ΡΡΡ), ΠΈ ΠΊΠ°ΠΊ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int error number; float real(complex* p);
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ error_number ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ int, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΈ Ρ.Π΄. Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ real ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ complex Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π°Π΄ΡΠ΅Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ . ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π²ΡΠΎΠ΄Π΅ int ΠΈ complex, ΡΠ²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠΈΠΏΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ ΠΈΠΌΡ ΡΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΈΠΏΠ° β ΡΡΠΎ sizeof (Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ°) ΠΈ new (Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
main() (* int* p = new int; cout Β«β "sizeof(int) = " «« sizeof(int) Β«\nβ; *)
ΠΠΌΡ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
float f; char* p; //... long ll = long(p); // ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ p Π² long int i = int(f); // ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ f Π² int
2.3.1 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π’ΠΈΠΏΡ
Π Π‘++ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π΅Π΄ΠΈΠ½ΠΈΡΠ°ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
char short int int long int
Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π»ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²,
float double
Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ,
unsigned char unsigned short int unsigned int unsigned long int
Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΡΠ΅Π»ΡΡ , Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ Ρ.ΠΏ. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΠΊΠ°ΡΡ int Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»ΠΎΠ², ΡΡΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΌΡΡΠ»Π°. Π’Π°ΠΊ, long ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ long int, ΠΈ unsigned ΡΠΈΠΏ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΈΠΏ unsigned int. Π ΠΎΠ±ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΎΠΏΡΡΠ΅Π½ ΡΠΈΠΏ, ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ int. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
const a = 1; static x;
Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° int.
Π¦Π΅Π»ΡΠΉ ΡΠΈΠΏ char Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ 8-Π±ΠΈΡΠΎΠ²ΡΠΉ Π±Π°ΠΉΡ. Π Π°Π·ΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π‘++ Π²ΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° char, ΠΏΠΎΡΠΎΠΌΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ sizeof(char)==1. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ char ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠ΅Π»ΡΠΌ. Π’ΠΈΠΏ unsigned char, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΡΠ΅Π³Π΄Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ, ΠΈ ΠΏΡΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΠΈΠ·-Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ char ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈ Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.