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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ Π‘ΠΈ - руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 66

Автор M. УЭИВ

#define BIG 3

#define HUGE 5

#undef BIG              /* BIG Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ */

#define HUGE 10        /* HUGE ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ 10 */

#undef HUGE           /* HUGE снова Ρ€Π°Π²Π΅Π½ 5*/

#undef HUGE           /* HUGE Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ */


     ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ (ΠΌΡ‹ надССмся), Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΊΠ°ΠΊ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ большой стандартный Ρ„Π°ΠΉΠ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #include, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ для этого Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π΅Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с этим Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ #define ΠΈ #undef.

     Π˜Π»ΠΈ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с большой систСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ вашС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ опрСдСлСния ΠΎΡ‚ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ мСста систСмы. Π’ этом случаС просто ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ вашС ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ мСстС, Π³Π΄Π΅ ΠΎΠ½ΠΎ Π²Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» этого макроопрСдСлСния, Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π² силС для ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части систСмы.

     Π”Ρ€ΡƒΠ³ΠΈΠ΅ упомянутыС Π½Π°ΠΌΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

#ifdef MAVIS 

#include " horse.h" /* выполнится, Ссли MAVIS ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ */

#define STABLES 5

#else

#include "cow.h" /*выполнится, Ссли MAVIS Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ */

#define STABLES 15

#endif


     Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #ifdef сообщаСт, Ρ‡Ρ‚ΠΎ Ссли ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (MAVIS) опрСдСляСтся прСпроцСссором, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ появлСния #else ΠΈΠ»ΠΈ #endif. Когда Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ #else, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ #else Π΄ΠΎ #endif Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, Ссли ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.

     Π’акая структура ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ if-else языка Π‘ΠΈ. Основная Ρ€Π°Π·Π½ΠΈΡ†Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прСпроцСссор Π½Π΅ распознаСт Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки {}, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #else (Ссли Π΅ΡΡ‚ΡŒ) ΠΈ #endif (которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ) для ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ².

     Π­Ρ‚ΠΈ условныС конструкции ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ.

     Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #ifdef ΠΈ #if ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с #else ΠΈ #endif Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #ifndef ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, являСтся Π»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ; эта Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π° #ifdef. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #if большС ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if языка Π‘ΠΈ. Π—Π° Π½Π΅ΠΉ слСдуСт константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ считаСтся истинным, Ссли ΠΎΠ½ΠΎ Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ:

#if SYS == "IBM"

#include "ibm.h"

#endif

     ΠžΠ΄Π½Π° ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ использования "условной компиляции" - ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ мобильной. ИзмСняя нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для Ρ€Π°Π·Π½Ρ‹Ρ… систСм.

     Π­Ρ‚ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ языка Π‘ΠΈ ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½ΠΎ ΠΈ строго ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.

ЧВО Π’Π« Π”ΠžΠ›Π–ΠΠ« Π‘Π«Π›Π˜ УЗНАВЬ Π’ Π­Π’ΠžΠ™ ГЛАВЕ

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #define: #define FINGERS 10

Как Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹: #include "albanian.h"

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡ€ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ: #define NEG(X) (-(X))

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символичСскиС константы: часто.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΡ€ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ΠΈΠ½ΠΎΠ³Π΄Π°.

ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ примСнСния ΠΌΠ°ΠΊΡ€ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты.

Π’ΠžΠŸΠ ΠžΠ‘Π« И ΠžΠ’Π’Π•Π’Π« 

Вопросы


1. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², содСрТащих ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅ Π΄Π΅Π»Π΅Π½ΠΈΠΉ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ строки исходных ΠΊΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… эти ΠΌΠ°ΠΊΡ€ΠΎ опрСдСлСния. Какой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получаСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС? ΠŸΡ€Π°Π²ΠΈΠ»Π΅Π½ Π»ΠΈ ΠΎΠ½?


a. #define FPM 5280 /* Ρ„ΡƒΡ‚ΠΎΠ² Π² ΠΌΠΈΠ»Π΅ */

dist = FPM * miles;


Π±. #define FEET 4

#define POD FEET + FEET

plort = FEET * POD;


Π². #define SIX = 6;

nex = SIX;


Π³. #define NEW(X) X + 5

Ρƒ = NEW(y);

berg = NEW(berg) * lob;

est = NEW(berg) / NEW(y);

nilp = lob * NEW(-berg);


2. ΠŸΠΎΠ΄ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² вопросС 1.Π³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ.


3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠ°ΠΊΡ€ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ минимальноС ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.


4. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ функция whitesp(с) ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰Π°Ρ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ пустыС символы.


5. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠ°ΠΊΡ€ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ прСдставлСния значСния Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

ΠžΡ‚Π²Π΅Ρ‚Ρ‹


1.

Π°. dist = 5280 * miles; ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.


Π±. plot = 4 * 4 + 4; ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π½ΠΎ Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π° самом Π΄Π΅Π»Π΅ Ρ…ΠΎΡ‚Π΅Π» ΠΈΠΌΠ΅Ρ‚ΡŒ 4 * (4 + 4), Ρ‚ΠΎ слСдовало ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #define POD (FEET + FEET).


Π². nex = = 6; Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ; ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π±Ρ‹Π», Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΈΡˆΠ΅Ρ‚ для прСпроцСссора, Π° Π½Π΅ Π½Π° языкС Π‘ΠΈ.


Π³. Ρƒ - Ρƒ + 5; ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

berg = berg + 5 * lob; ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π½ΠΎ, вСроятно, это Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

est = berg + 5/Ρƒ + 5; Ρ‚ΠΎ ΠΆΠ΅ самоС.

nilp = lob * -berg + 5; Ρ‚ΠΎ ΠΆΠ΅ самоС.


2. #define NEW(X) ((X) + 5)


3. #deline MIN(X,Y) ((X) < (Y) ? (X) : (Y))


4. #define WHITESP(C) ((Π‘) == ' ' || (Π‘) == '\n' || (Π‘)) == '\t')


5. #define PR2(X,Y) printf(" X Ρ€Π°Π²Π½ΠΎ %d ΠΈ Y Ρ€Π°Π²Π½ΠΎ %d.\n", X, Y)

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² этом ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π₯ ΠΈ Y Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опСрациями (Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅), ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² скобки.

Π£ΠŸΠ ΠΠ–ΠΠ•ΠΠ˜Π•

1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ прСпроцСссора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

12. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

ΠœΠΠ‘Π‘Π˜Π’Π«. ΠœΠΠžΠ“ΠžΠœΠ•Π ΠΠ«Π• ΠœΠΠ‘Π‘Π˜Π’Π«. Π˜ΠΠ˜Π¦Π˜ΠΠ›Π˜Π—ΠΠ¦Π˜Π― ΠœΠΠ‘Π‘Π˜Π’ΠžΠ’. Π£ΠšΠΠ—ΠΠ’Π•Π›Π˜ И ΠžΠŸΠ•Π ΠΠ¦Π˜Π˜ НАД Π£ΠšΠΠ—ΠΠ’Π•Π›Π―ΠœΠ˜. Π‘Π’Π―Π—Π¬ ΠœΠ•Π–Π”Π£ ΠœΠΠ‘Π‘Π˜Π’ΠžΠœ И Π£ΠšΠΠ—ΠΠ’Π•Π›Π•Πœ. ΠžΠŸΠ•Π ΠΠ¦Π˜Π˜  & * (ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅)

ΠœΠ΅ΠΆΠ΄Ρƒ массивами ΠΈ указатСлями сущСствуСт ΠΎΡ‡Π΅Π½ΡŒ тСсная связь, поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ вмСстС. Но, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ эту связь, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ наши знания ΠΎ массивах ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΈΡ…, Π° ΡƒΠΆ послС этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ связи ΠΌΠ΅ΠΆΠ΄Ρƒ массивами ΠΈ указатСлями.

ΠœΠΠ‘Π‘Π˜Π’Π« 

    Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ массив прСдставляСт собой Π³Ρ€ΡƒΠΏΠΏΡƒ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Когда Π½Π°ΠΌ трСбуСтся для Ρ€Π°Π±ΠΎΡ‚Ρ‹ массив, ΠΌΡ‹ сообщаСм ΠΎΠ± этом компилятору ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² описания. Для создания массива компилятору Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ класс памяти, Ρ‚. Π΅. Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ для простой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ "скалярной"). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ извСстно, сколько элСмСнтов ΠΈΠΌΠ΅Π΅Ρ‚ массив. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ классы памяти, Ρ‡Ρ‚ΠΎ ΠΈ простыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈ ΠΊ Π½ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ умолчания. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… описаний массивов:

/* нСсколько описаний массивов */

int temp[365]; /* внСшний массив ΠΈΠ· 365 Ρ†Π΅Π»Ρ‹Ρ… чисСл */

main( )

{

float rain[365];  /* автоматичСский массив ΠΈΠ· 365 чисСл Ρ‚ΠΈΠΏΠ°

float */

static char code[12];  /* статичСский массив ΠΈΠ· 12 символов */

extern temp[ ]; /* внСшний массив; Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡƒΠΊΠ°Π·Π°Π½ Π²Ρ‹ΡˆΠ΅ */

}

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ([ ]) говорят ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ temp ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ массивов, Π° число, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ Π² скобки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство элСмСнтов массива. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива опрСдСляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ индСксом. НумСрация элСмСнтов начинаСтся с нуля, поэтому temp[0] являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, Π° temp[364] послСдним 365-элСмСнтом массива temp. Но всС это Π²Π°ΠΌ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ извСстно, поэтому ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½ΠΎΠ²ΠΎΠ΅.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массивов ΠΈ классы памяти

     Π”ля хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ массивы. НапримСр, Π² массивС ΠΈΠ· 12 элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ количСствС Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСсяца. Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… случаях ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Вакая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π²ΠΎΠΎΠ±Ρ‰Π΅ говоря, сущСствуСт, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для статичСской ΠΈ внСшнСй памяти. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

     ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ скалярныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² описании Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

int fix = 1;

float flΠ°Ρ… = PI*2;

ΠΏΡ€ΠΈ этом прСдполагаСтся, Ρ‡Ρ‚ΠΎ PI - Ρ€Π°Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. МоТСм Π»ΠΈ ΠΌΡ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ с массивом? ΠžΡ‚Π²Π΅Ρ‚ Π½Π΅ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½: ΠΈ Π΄Π°, ΠΈ Π½Π΅Ρ‚.

     Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΈ статичСскиС массивы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

     ΠΠ²Ρ‚оматичСскиС ΠΈ рСгистровыС массивы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСльзя.