Помогни ни да направим Uroci.net по - богат! Добави урок

С++ част.2 (Типове данни)

C++ » C++
fix3d   трудност:    видян: 31140


Глава 2: Типове данни в С++.

Съдържание на втора глава :
2.1. Константни стойности
2.2. Променливи
2.3. Указателни типове
2.4. Съотнасящи типове (reference types)
2.5. Константни типове
2.6. Изброими типове
2.7. Тип масив
2.8. Тип клас


Езикът С++ предлага набор от предварително дефинирани типове данни, оператори за обработката им, както и няколко оператори за програмен контрол. Тези елементи определят азбуката, чрез която могат да бъдат написани множество големи системи, приложими в реалния свят. На това базисно ниво С++ е един прост език. Неговата изразителна сила се увеличава чрез поддържането на механизми, които позволяват на програмиста да дефинира нови даннови съвкупности.

Първата стъпка при усвояването на С++ - разбирането на базисния език - е тема на тази и следващата глава. Тази глава обсъжда предварително дифинираните типове данни пояснява механизма за конструиране на нови типове данни, докато глава 2 разглежда предварително дефинираните операции и оператори. Текстът на програмата, която пишем, както и данните, които обработваме, са записани в паметта на компютъра като последователност от битове. Всеки бит представлява единична клетка, където могат да се съдържат стойностите 0 или 1. На физичен език тези стойности са електрически заряди, съответствуващи на “off” или “on”. Обикновено част от паметта на компютъра изглежда така:

...00011011011100010110010000111011...

Съвкупността от битове на това ниво няма структура. Трудно е да се говори за този поток от битове по който и да е смислен начин.

Върху последователността от битове се налага структура като се счита, че те са групирани в байтове и думи. Най - общо казано, байтът е съвкупност от 8 бита. Обикновено една дума се образува от 16 или 32 бита. Размерът на байта и думата варират между различните компютри. За тези стойности често се казва, че са машинно зависими. Фигура 1.1. показва горната последователност от битове, организирана в четири адресируеми редици от байтове.

Организацията на паметта ни позволява да се обръщаме към подходяща съвкупност от битове. По такъв начин вече е възможно да говорим за думата на адрес 1024 или за байта на адрес 1040, което ни позволява да казваме например, че байта на адрес 1032 не е равен на байта от адрес 1048.

Но все още не е възможно да се говори смислено за съдържанието на байта на адрес 1032. Защо? Защото не знаем как да интерпретираме неговата битова последователност. За да говорим за значението на байта от адрес 1032, ние трябва да знаем типа на стойността, която е представена.

Абстракцията на типовете ни позволява да правим смислена интерпретация на битова последователност с фиксирана дължина. Символите, целите и реалните числа са примери за

1024 0 0 0 1 1 0 1 1
1032 0 1 1 1 0 0 0 1
1040 0 1 1 0 0 1 0 0
1048 0 0 1 1 1 0 1 1

Адресируема машинна памет, типове данни.

Други типове са адресите в паметта и машинните инструкции, които управляват работата на компютъра.

С++ предлага един предварително дефиниран набор от типове на данни, който позволява представянето на цели и реални числа и на самостоятелни символи.

Типът char може да бъде използуван за представяне на единични символи или малки цели числа. Записва се в една машинна дума.

Типът int се използува за представяне на цели стойности. Обикновено се записва в една машинна дума.

С++ предлага също short и long integer типове. Фактическият размер на тези типове е машинно зависим. Типовете char, short, int и long се наричат цели типове. Целите типове могат да бъдат със или без знак (signed/unsigned). Разликата се проявява в предназначението на най-левия бит на типа. Ако типът има знак, най-левият бит се интерпретира като знаков бит, а останалите битове представят стойността. Ако типът представя без знакова стойност, всички битове определят стойността. Ако знаковият бит има съдържание 1, стойността се интерпретира като отрицателна; ако е 0, като положителна. Един 8-битов signed char може да представи стойностите от -128 до 127; а unsigned char - от 0 до 255.

Типовете float и double представят реални числа с единична и двойна точност. Обикновено типът float се представя в една дума, а double - в две. Истинският размер е машинно зависим. Изборът на типа данни се определя от размера на стойностите, които трябва да бъдат записвани. Например, ако стойностите никога не надхвърлят 255 и не са по-малки от 0, тогава типът unsigned char е подходящ. Обаче, ако се очаква стойностите да надхвърлят 255, е необходимо да се избере някой от по-големите даннови типове.

Третият тип данни, представящ реални числа long double, вероятно ще бъде добавен в близко бъдеще. Long double е предложен за включване към стандарта на езика C ANSI.

2.1. Константни стойности

Когато в дадена програма се появява стойност като 1, например, тя се приема за литерална константа: литерална, защото можем да говорим за нея само като за стойност, константа, защото стойността й не може да бъде променяна. Всеки литерал има съответен тип. 1, например е от тип int. 3.14159 е литерална константа от тип double. Считаме литералните константи за неадресируеми; въпреки, че тяхната стойност е разположена някъде в паметта, достъпът до този адрес не е съществен.

Целите литерални константи могат да бъдат написани в десетичен, осмичен или шестнадесетичен вид. ( Това не променя битовото представяне на стойността.) Стойността 20, например, може да бъде записана по един от следните три начина:

20 // десетичен
024 // осмичен
0х14 // шестнадесетичен

Водещата нула за литерална константа от цял тип указва, че константата е от осмичен тип. Представяне, използуващо 0х или 0Х в началото на константата, указва, че тя е в шестнадесетичен запис. (Приложение А обсъжда отпечатването на стойности в осмичен и шестнадесетичен запис).

Всяка цяла литерална константа може да бъде дефинирана от тип long чрез записване на L или l след стойността й. (Буквата L може да бъде главна или малка). Използуването на малка буква l не се препоръчва, понеже лесно може да бъде сбъркана с цифрата 1. По подобен начин цяла литерална константа може да бъде дефинирана като unsigned чрез добавяне на U или u след стойността й. Литерална константа от тип unsigned long може също да се дефинира. Например,

128u 1024UL 1L 8Lu
Реалните литерални константи могат да бъдат записвани чрез експонента или по обичайния начин. При първото представяне екс-понентата може да бъде записана като се използуват буквите Е или е. Реална литерална константа може да бъде дефинирана и от тип float чрез записване на F или f след стойността й. Ето няколко примера за реални литерални константи:

3.14159F 0.1f 0.0
3e1 1.0E-3 2.

Печатуемите литерални символни константи могат да бъдат записани чрез заграждането на символа в единични кавички. Например,

‘a’ ‘2’ ‘,’ ‘ ‘ (blank)

Непечатуемите символи, единичните или двойните кавички, както и обърнатата наклонена черта могат да бъдат представени чрез следните escape - последователности:

newline n
horizontal tab t
vertical tab v
backspace b
carrige return r
formfeed f
alert (bell) a
backslash
question mark ?
single quote ’
double quote "

Може да бъде използувана и обобщена escape - последователност. Тя изглежда така:

ооо

където ооо представлява последователност от една, две или три осмични цифри. Стойността, представена чрез осмичните цифри, представлява числената стойност на символа в символния набор на машината. Примерите, които следват, представляват литерални константи, като се използува символния набор ASCII:

7 (bell) 14 (newLine)
� (null) �62 (‘2’)

Всяка низова литерална константа представлява съвкупност от нула или повече символа, обградени с двойни кавички. Непечатуемите символи могат да бъдат представяни чрез техните escape - последователности. Низов литерал може да заеме няколко реда от текста на програмата. Обратната наклонена черта като последен символ на реда указва, че низовият литерал продължава на следващия ред. Следва пример за низови литерални константи:

"" (null string)
"a"
"nCCtoptionstfile:[cC]n"
"a multi-line
string literal signal its
continuation with a backslash"

Низовият литерал е от тип масив от символи. Той се състои от низов литерал и ограничаващия символ null, добавен от компилатора. Например, докато ‘a’ представя единичния символ а, то “a” се записва като символа а, следван от символа null. Символът null се използува за отбелязване на края на низа.


Страници: 1 2 3 4 »

Коментари (1)

hotsaucebg на 27.06 2009 в 17:43ч.
Няма ли уроци само за C

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com