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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ. ИзданиС 3-Π΅, исправлСнноС». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 12

Автор Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½

Π Π°Π·ΡƒΠΌΠ½ΠΎ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ осмыслСнныС ΠΈΠΌΠ΅Π½Π° Π² соотвСтствии с ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π±Ρ‹Π»ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΏΡƒΡ‚Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, особСнно для счСтчиков Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ для Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

2.2 Π’ΠΈΠΏΡ‹ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’ Π‘ΠΈ сущСствуСт всСго лишь нСсколько Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²:

char - Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ символ ΠΈΠ· допустимого символьного Π½Π°Π±ΠΎΡ€Π°;

int - Ρ†Π΅Π»ΠΎΠ΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅ СстСствСнноС прСдставлСниС Ρ†Π΅Π»Ρ‹Ρ… Π² машинС;

float - число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ точности;

double - число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ нСсколько ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСстС с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. НапримСр, ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ short (ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ) ΠΈ long (Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ) ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Ρ†Π΅Π»Ρ‹ΠΌ:

short int sh;

long int counter;

Π’ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… слово int ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈ дСлаСтся. Если Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ со Π·Π΄Ρ€Π°Π²Ρ‹ΠΌ смыслом, short int ΠΈ long int Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, Π° int ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ СстСствСнному Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ†Π΅Π»Ρ‹Ρ… Π½Π° Π΄Π°Π½Π½ΠΎΠΉ машинС. Π§Π°Ρ‰Π΅ всСго для прСдставлСния Ρ†Π΅Π»ΠΎΠ³ΠΎ, описанного с ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ short, отводится 16 Π±ΠΈΡ‚, с ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ long - 32 Π±ΠΈΡ‚Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠ° int - ΠΈΠ»ΠΈ 16, ΠΈΠ»ΠΈ 32 Π±ΠΈΡ‚Π°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ компилятора Π²ΠΏΡ€Π°Π²Π΅ сами Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ подходящиС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, ΡΠΎΠΎΠ±Ρ€Π°Π·ΡƒΡΡΡŒ с характСристиками своСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ соблюдая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния: значСния Ρ‚ΠΈΠΏΠΎΠ² short ΠΈ int ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ 16 Π±ΠΈΡ‚Π°ΠΌΠΈ; Ρ‚ΠΈΠΏΠ° long - ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ 32 Π±ΠΈΡ‚Π°ΠΌΠΈ; Ρ€Π°Π·ΠΌΠ΅Ρ€ short Π½Π΅ большС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° int, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ большС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° long.

ΠšΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ signed (со Π·Π½Π°ΠΊΠΎΠΌ) ΠΈΠ»ΠΈ unsigned (Π±Π΅Π· Π·Π½Π°ΠΊΠ°) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Ρ‚ΠΈΠΏΡƒ char ΠΈ Π»ΡŽΠ±ΠΎΠΌΡƒ цСлочислСнному Ρ‚ΠΈΠΏΡƒ. ЗначСния unsigned всСгда ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ Π·Π°ΠΊΠΎΠ½Π°ΠΌ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 2n, Π³Π΄Π΅ n - количСство Π±ΠΈΡ‚ Π² прСдставлСнии Ρ‚ΠΈΠΏΠ°. Π’Π°ΠΊ, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ char отводится 8 Π±ΠΈΡ‚ΠΎΠ², Ρ‚ΠΎ unsigned char ΠΈΠΌΠ΅Π΅Ρ‚ значСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 255, a signed char - ΠΎΡ‚ -128 Π΄ΠΎ 127 (Π² машинС с Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ). Π―Π²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ значСния Ρ‚ΠΈΠΏΠ° просто char Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π² любом случаС ΠΊΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Ρ… символов ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹.

Π’ΠΈΠΏ long double ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ точности. Как ΠΈ Π² случаС Ρ†Π΅Π»Ρ‹Ρ…, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ зависят ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ; float, double ΠΈ long double ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, Π° ΠΌΠΎΠ³ΡƒΡ‚ - двумя ΠΈΠ»ΠΈ трСмя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ.

Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ константы для всСх Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ характСристиками ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ компилятора содСрТатся Π² стандартных Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… β€Ήlimits.hβ€Ί ΠΈ β€Ήfloat.hβ€Ί (см. ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ B).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.1. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² char, short, int ΠΈ long, описанных ΠΊΠ°ΠΊ signed ΠΈ ΠΊΠ°ΠΊ unsigned, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· стандартных Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ прямого вычислСния. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ эти Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ слоТнСС.

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

ЦСлая константа, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1234, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° Ρ‚ΠΈΠΏΠ° long Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π±ΡƒΠΊΠ²ΠΎΠΉ l ΠΈΠ»ΠΈ L, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 123456789L: слишком большоС Ρ†Π΅Π»ΠΎΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ int, Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСно ΠΊΠ°ΠΊ long. Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ константы Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΡƒΠΊΠ²ΠΎΠΉ u ΠΈΠ»ΠΈ U, Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ul ΠΈΠ»ΠΈ UL Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ константы - unsigned long.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ (123.4), ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ (1Π΅-2), ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Если Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ окончания, считаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ Ρ‚ΠΈΠΏΡƒ double. ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ f ΠΈΠ»ΠΈ F ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΈΠΏ float, Π° l ΠΈΠ»ΠΈ L - Π½Π° Ρ‚ΠΈΠΏ long double.

Π¦Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ дСсятичного ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС. Если константа начинаСтся с нуля, Ρ‚ΠΎ ΠΎΠ½Π° прСдставлСна Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Ссли с 0x ΠΈΠ»ΠΈ с 0X, Ρ‚ΠΎ - Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ. НапримСр, дСсятичноС Ρ†Π΅Π»ΠΎΠ΅ 31 ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ 037 ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ 0X1F. Записи Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ констант ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ Π±ΡƒΠΊΠ²ΠΎΠΉ L (для указания Π½Π° Ρ‚ΠΈΠΏ long) ΠΈ U (Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ константа бСззнаковая). НапримСр, константа 0XFUL ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 15 ΠΈ Ρ‚ΠΈΠΏ unsigned long.

Бимвольная константа Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅, записанноС Π² Π²ΠΈΠ΄Π΅ символа, ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 'x'. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ символьной константы являСтся числовой ΠΊΠΎΠ΄ символа ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° символов Π½Π° Π΄Π°Π½Π½ΠΎΠΉ машинС. НапримСр, символьная константа '0' Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ASCII ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 48, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ числовому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 0 Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚. Когда ΠΌΡ‹ пишСм '0', Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 46), зависящСС ΠΎΡ‚ способа ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСзависимой ΠΎΡ‚ частного значСния ΠΊΠΎΠ΄Π°, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ½Π° ΠΈ Π»Π΅Π³Ρ‡Π΅ читаСтся. Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опСрациях Π½Π°Π΄ числами Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Π΅, хотя Ρ‡Π°Ρ‰Π΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для сравнСния с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ символами.

НСкоторыС символы Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ строковых константах Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эскСйп-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ \n (символ Π½ΠΎΠ²ΠΎΠΉ строки); Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ двумя символами, Π½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅

'\ooo'

Π³Π΄Π΅ ΠΎΠΎΠΎ - ΠΎΠ΄Π½Π°, Π΄Π²Π΅ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ (0:7) ΠΈΠ»ΠΈ

'\xhh'

Π³Π΄Π΅ hh - ΠΎΠ΄Π½Π°, Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ (0…9, а…f, A…F). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

#define VTAB '013' /* Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ табуляция Π² ASCII */

#define BELL '\007' /* Π·Π²ΠΎΠ½ΠΎΠΊ Π² ASCII */

ΠΈΠ»ΠΈ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅:

#define VTAB '\xb' /* Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ табуляций Π² ASCII */

#define BELL '\x7' /* Π·Π²ΠΎΠ½ΠΎΠΊ Π² ASCII */

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ эскСйп-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Ρ‚Π°ΠΊΠΎΠ²:

\а сигнал-звонок

\b Π²ΠΎΠ·Π²Ρ€Π°Ρ‚-Π½Π°-шаг (Π·Π°Π±ΠΎΠΉ)

\f ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄-страницы

\n новая-строка

\r Π²ΠΎΠ·Π²Ρ€Π°Ρ‚-ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ

\t Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ-табуляция

\v Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ-табуляция

\\ обратная наклонная Ρ‡Π΅Ρ€Ρ‚Π°

\? Π·Π½Π°ΠΊ вопроса

\' одиночная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°

\" двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°

\ooo Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

\xhh ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

Бимвольная константа '\0' - это символ с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ символ null. ВмСсто просто 0 часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ запись '\0', Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ выраТСния, хотя ΠΈ Π² Ρ‚ΠΎΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ случаС запись ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½ΡƒΠ»ΡŒ.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния - это выраТСния, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с константами. Π’Π°ΠΊΠΈΠ΅ выраТСния Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции, Π° Π½Π΅ Π²ΠΎ врСмя выполнСния, ΠΈ поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² любом мСстС, Π³Π΄Π΅ допустимы константы, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²

#define MAXLINE 1000

char line[MAXLINE+1];

ΠΈΠ»ΠΈ Π²

#define LEAP 1 /* in leap years - Π² високосныС Π³ΠΎΠ΄Ρ‹ */

int days[31+28+LEAP+31+30+31+30+31+31+30+31+30+31];

Бтроковая константа, ΠΈΠ»ΠΈ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π», - это Π½ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ символов, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

"Π― строковая константа"

ΠΈΠ»ΠΈ

"" /* пустая строка */

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ входят Π² строку, Π° слуТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΅ ограничитСлями. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы, Π² строки ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ эскСйп-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ; \", Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, прСдставляСт собой Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ константы ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ("ΡΠΊΠ»Π΅ΠΈΠ²Π°Ρ‚ΡŒ") Π²ΠΎ врСмя компиляции; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запись Π΄Π²ΡƒΡ… строк

"Здравствуй," " ΠΌΠΈΡ€!"

эквивалСнтна записи ΠΎΠ΄Π½ΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки:

"Здравствуй, ΠΌΠΈΡ€!"

Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ свойство позволяСт Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ строки Π½Π° части ΠΈ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ эти части Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строчках.

ЀактичСски строковая константа - это массив символов. Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ прСдставлСнии строки Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ присутствуСт Π½ΡƒΠ»Π΅Π²ΠΎΠΉ символ '\0', поэтому памяти для строки трСбуСтся Π½Π° ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ большС, Ρ‡Π΅ΠΌ число символов, располоТСнных ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ строки Π½Π΅Ρ‚ ограничСния, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π΅ Π΄Π»ΠΈΠ½Ρƒ, трСбуСтся ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всю строку. Ѐункция strlen(s) вычисляСт Π΄Π»ΠΈΠ½Ρƒ строки s Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ Π΅Π΅ символа '\0'. НиТС приводится наша вСрсия этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

/* strlen: Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ строки s */

int strlen(char s[])

{

 int i;

 i = 0;

 while (s[i] != '\0')

  ++i;

 return i;