C++ за 21 день седьмое издание



Download 1,38 Mb.
bet245/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   241   242   243   244   245   246   247   248   ...   437
Bog'liq
word1

int MyNumbers [25] = {0};

// массив из 25

целых

чисел




double Radiuses [25] = {0.0};

// массив из

25

чисел

типа double




std::string Names [25];

// массив из

25

std::strings




Замена применима к любому разделу кода, включая такой цикл f o r , как этот:




for(int Index = 0; Index < ARRAY_LENGTH; ++Index)


MyNumbers[Index] = Index;

Этот цикл f o r видим компилятору так:




for(int Index = 0; Index < 25; ++Index)


MyNumbers[Index] = Index;

Чтобы увидеть все это в действии, рассмотрим листинг 14.1.


ЛИСТИНГ 14.1. Объявление и использование макроса, определяющего константы





  1. tinclude




  1. #include




  1. using namespace std;








  1. #define ARRAY_LENGTH 25




  1. #define PI 3.1416




  1. #define MYJXXJBLE double




  1. #define FAV_WHISKY "Jack Daniels"

8 :

  1. int main()

10: {



  1. int MyNumbers [ARRAY_LENGTH] = {0};



12: cout « "Array's length: " « sizeof(MyNumbers) / sizeof(int)



  1. endl;



13:



  1. cout « "Enter a radius: ";




  1. MY_DOUBLE Radius = 0;




  1. cin » Radius;




  1. cout « "Area is: " « PI * Radius * Radius « endl;








  1. string FavoriteWhisky (FAV_WHISKY);

20: cout « "My favorite drink is: " « FAV_WHISKY « endl;
2 1 :



  1. return 0;




  1. }



Результат


Array's length: 25


Enter a radius: 2.1569


Area is: 14.7154


My favorite drink is: Jack Daniels


Анализ

ARRAY_LENGTH, P I, MY_DOUBLE и FAV_WHISKY являются четырьмя макро-константами, определенными в строках 3-7 соответственно. Как можно заметить, первая используется





12 3ак. 3626

354 ЗАНЯТИЕ 14. Макросы и шаблоны

при определении длины массива в строке 11, которая проверяется при помощи оператора s i z e o f () в строке 12. Константа MY_DOUBLE используется при объявлении переменный R a d iu s типа d o u b le в строке 15, а константа P I используется при вычислении площади круга в строке 17. И наконец, константа FAV_W H ISKY используется при инициализации объекта класса s t d : : s t r i n g в строке 19 и непосредственно используется в операторе c o u t (строка 20). Все эти случаи демонстрируют, что препроцессор просто осуществляет текстовую замену.





    1. такой “тупой” текстовой замены, которая, кажется, нашла повсеместное применение




  1. листинге 14.1, есть также и недостатки.

Поскольку препроцессор делает лишь текстовую подстановку, он позволяет вам совершать ошибки (которые компилятор не всегда выявляет). Вы могли бы определить константу F A V _W H I S K Y в строке 7 листинга 14.1 так:




#define FAV_WHISKY 42 // "Jack Daniels"

Это может закончиться ошибкой компиляции в строке 19 при создании экзем­ пляра класса std::string, а может и нет, тогда компилятор продолжит работу и выведет следующее:




Му favorite drink is: 42

Это, конечно, не имело бы смысла, но важней всего то, что осталось бы необна­ руженным. Кроме того, вы не имеете особого контроля над определением такой константы P I :будет ли она иметь тип double или float? Ответ: ни тот ни дру­ гой. PI для препроцессора - это только текст, заменяемый текстом “3.1416й. Ни о каком типе данных нет и речи.


Константы лучше определять, используя ключевое слово const с типами дан­ ных. Так намного лучше:





Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   241   242   243   244   245   246   247   248   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish