void free(void *Π°Ρ) {
Header *bp, *p;
bp = (Header *)ap -1; /* ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π±Π»ΠΎΠΊΠ° */
for (p = freep; !(bp βΊ p && bp s.ptr); p = p-βΊs.ptr)
if (p βΊ= p-βΊs.ptr && (bp βΊ p || bp s.ptr)) break; /* ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ Π±Π»ΠΎΠΊ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ */
if (bp + bp-βΊs.size - p-βΊs.ptr) { /* ΡΠ»ΠΈΡΡ Ρ Π²Π΅ΡΡ Π½ΠΈΠΌ */
bp-βΊs.size += p-βΊs.ptr-βΊs.size; /* ΡΠΎΡΠ΅Π΄ΠΎΠΌ */
bp-βΊs.ptr = p-βΊs.ptr-βΊs.ptr;
} else bp-βΊs.ptr = p-βΊs.ptr;
if (p + p-βΊs.size == bp) { /* ΡΠ»ΠΈΡΡ Ρ Π½ΠΈΠΆΠ½ΠΈΠΌ ΡΠΎΡΠ΅Π΄ΠΎΠΌ */
p-βΊs.size += bp-βΊs.size;
p-βΊs.ptr = bp-βΊs.ptr;
} else p-βΊs.ptr = bp;
freep = p;
}
Π₯ΠΎΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ - ΠΌΠ°ΡΠΈΠ½Π½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ, ΡΡΠΎ ΠΈ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΏΡΡΡΠ°Π½Π° Π² ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ Π΅Π΅ ΡΠ°ΡΡΠΈ. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ, ΡΠΎ ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠΈΠ»ΠΈ Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ typedef ΠΈ union (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ sbrk Π΄Π°Π΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π² ΡΠΌΡΡΠ»Π΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ). ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²Π½ΡΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΠΏΠ»ΠΎΡ ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π½Π°ΡΠΈ ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΈΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎΡ ΠΎΠ±ΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ .
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.6. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ calloc(n, size) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° n ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° size, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ Π½ΡΠ»ΡΠΌΠΈ. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ calloc, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ malloc ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.7. Π€ΡΠ½ΠΊΡΠΈΡ malloc Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡ Π΅Π³ΠΎ Π½Π° ΠΏΡΠ°Π²Π΄ΠΎΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅: free ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° - ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ. Π£ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΡΠΉΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.8. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ bfree(p, n), ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ p, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· n ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ malloc ΠΈ free. C ΠΏΠΎΠΌΠΎΡΡΡ bfree ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A. Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ
A1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ°Π½Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ 31 ΠΎΠΊΡΡΠ±ΡΡ 1989 Π³. Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΡΠΌ Π² ANSI Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΎΠ³ΠΎ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ: Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΈ, X3.159-1989 ("American National Standard for Information Systems - Programming Language C, X3.159-1989"). ΠΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ - Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°, Π° Π½Π΅ ΡΠ°ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π·Π°Π±ΠΎΡΠΈΠ»ΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎ ΡΠ·ΡΠΊΡ.
ΠΠ°ΡΡΠΎΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΡΠΎΠΉ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ (ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π»Π°ΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ), ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅ Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ. ΠΡΠ»ΠΈ Π½Π΅ ΡΡΠΈΡΠ°ΡΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ Π² Π½Π°Π·Π²Π°Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΡΠ·ΡΠΊΠ° Π·Π΄Π΅ΡΡ ΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ (ΠΊΠ°ΠΊ ΠΈ ΡΡΠΎ) Π½Π°Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΠΎΡΡΡΡΠΏΠΎΠΌ ΠΎΡ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΡ. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ°ΡΠ°ΡΡΡΡ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ .
A2. Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π»Π΅ΠΊΡΠΈΠΊΠ΅
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ, Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ°ΠΊΠ°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² A12. ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ, Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌΠΈΡΡ ΡΠΎ Π·Π½Π°ΠΊΠ° #, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (A12) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊ Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π»Π΅ΠΊΡΠ΅ΠΌ.
A2.1. ΠΠ΅ΠΊΡΠ΅ΠΌΡ (tokens)
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ (ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ²): ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ½Π°, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ. ΠΡΠΎΠ±Π΅Π»Ρ, Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, Π½ΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ) ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈ Π² ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ. ΠΡΠ±ΠΎΠΉ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ Π³ΠΎΠ΄ΠΈΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΆΠ΅ Π΄ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΠ°Π·Π±ΠΈΡ Π½Π° Π»Π΅ΠΊΡΠ΅ΠΌΡ, ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΌΠ°Ρ Π΄Π»ΠΈΠ½Π½Π°Ρ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠΎΠΉ.
A2.2. ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ /* ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, Π° ΡΠΈΠΌΠ²ΠΎΠ»Ρ */ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ. ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π΄ΡΡΠ³ Π² Π΄ΡΡΠ³Π°, ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π²Π½ΡΡΡΡ ΡΡΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ².
A2.3. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ - ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΡΠΊΠ² ΠΈ ΡΠΈΡΡ. ΠΠ΅ΡΠ²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π±ΡΠΊΠ²Π°; Π·Π½Π°ΠΊ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ _ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π±ΡΠΊΠ²ΠΎΠΉ. ΠΡΠΊΠ²Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΡΡ Π΄Π»ΠΈΠ½Ρ; Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π·Π½Π°ΡΠΈΠΌΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ 31 ΡΠΈΠΌΠ²ΠΎΠ»; Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΠΏΡΠΈΠ½ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π·Π½Π°ΡΠΈΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΈ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ (A11.2). ΠΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠ²ΡΠ·ΡΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ: ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΡΠΈ ΠΏΠ΅ΡΠ²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π±ΡΠΊΠ²Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ².
A2.4. ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΠΈ Π² Π΄ΡΡΠ³ΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ:
auto
break
char
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ»ΠΎΠ²Π° fortran ΠΈ asm.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° const, signed ΠΈ volatile Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ANSI; enum ΠΈ void - Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΈΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ½ΠΈΠ³ΠΈ, Π½ΠΎ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ; ΡΠ°Π½Π΅Π΅ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ entry Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΡΡΡ.
A2.5. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ² ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ; Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π² A4.2.
ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°:
ΡΠ΅Π»Π°Ρ-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°
ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½Π°Ρ-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°
ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°-Ρ-ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ-ΡΠΎΡΠΊΠΎΠΉ
ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°-ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅
A2.5.1. Π¦Π΅Π»ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
Π¦Π΅Π»Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡ, Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½Π°Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0 (ΡΠΈΡΡΡ Π½ΡΠ»Ρ), ΠΈ ΠΊΠ°ΠΊ Π΄Π΅ΡΡΡΠΈΡΠ½Π°Ρ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΡΡ 8 ΠΈ 9. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡ, ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΡΡ 0x ΠΈΠ»ΠΈ 0X, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅. Π ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π±ΡΠΊΠ²Ρ ΠΎΡ a (ΠΈΠ»ΠΈ A) Π΄ΠΎ f (ΠΈΠ»ΠΈ F) co Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ 10 Π΄ΠΎ 15.
Π¦Π΅Π»Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π° Ρ Π±ΡΠΊΠ²ΠΎΠΉ-ΡΡΡΡΠΈΠΊΡΠΎΠΌ u (ΠΈΠ»ΠΈ U) Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΅Π΅ ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Ρ Π±ΡΠΊΠ²ΠΎΠΉ- ΡΡΡΡΠΈΠΊΡΠΎΠΌ l (ΠΈΠ»ΠΈ L) Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ long.
Π’ΠΈΠΏ ΡΠ΅Π»ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΅Π΅ Π²ΠΈΠ΄Π°, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΡΠΈΠΊΡΠ° (ΠΎ ΡΠΈΠΏΠ°Ρ ΡΠΌ. A4). ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° - Π΄Π΅ΡΡΡΠΈΡΠ½Π°Ρ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΈΠΊΡΠ°, ΡΠΎ ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: int, long int, unsigned long int. ΠΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π±Π΅Π· ΡΡΡΡΠΈΠΊΡΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΠΈΠ· ΡΠΈΠΏΠΎΠ²: int, unsigned int, long int, unsigned long int. ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΈΠΊΡ u ΠΈΠ»ΠΈ U, ΡΠΎ ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΠΈΠ· ΡΠΈΠΏΠΎΠ²: unsigned int, unsigned long int. ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΈΠΊΡ l ΠΈΠ»ΠΈ L, ΡΠΎ ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΠΈΠ· ΡΠΈΠΏΠΎΠ²: long int, unsigned long int. ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΈΠΊΡ ul ΠΈΠ»ΠΈ UL, ΡΠΎ ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΠΏ unsigned long int.