Ц ++ променљиве и типови: инт, доубле, цхар, стринг, боол

Преглед садржаја:

Anonim

Променљиве у Ц ++

Ц ++ променљива пружа нам именовану могућност складиштења. Омогућава програмеру да манипулише подацима према потреби. Свака променљива има тип у Ц ++. Тип променљиве помаже у одређивању величине и распореда мапе меморије променљиве, опсега вредности које се могу сачувати у тој меморији и скупа операција које се на њу могу применити.

У овом упутству за Ц ++ научићете:

  • Променљиве у Ц ++
  • Основни типови променљивих у Ц ++
  • Правила декларисања променљивих у Ц ++
  • Ц ++ променљиви типови података
  • Назив променљиве или идентификатори
  • Цонст Куалифиер у језику Ц ++
  • Обим променљивих у Ц ++
  • Конверзија променљивих типова
  • Региструјте променљиве
  • Секвенце бекства

Основни типови променљивих у Ц ++

Ево основних типова променљивих на Ц ++:

Инт:

Цели број је нумерички литерал (повезан са бројевима) без било каквог разломљеног или експоненцијалног дела. Пример. 120, -90 итд.

Доубле:

То је вредност двоструке прецизности са покретним зарезом. Пример: 11.22, 2.345

Цхар:

Карактер слова ствара се затварањем једног знака унутар појединачних наводника. На пример: 'а', 'м', 'Ф', 'П', '}' итд.

Пловак:

Буквал са покретном тачком је нумерички литерал који има или разломљени облик или експонентни облик. На пример: 1.3, 2.6

Стринг Литералс:

Знаковни низ је низ знакова који су затворени у двоструке наводнике. На пример: „Како си?“

Боол:

Држи логичку вредност тачно или нетачно.

Правила декларисања променљивих у Ц ++

Ево неколико уобичајених правила за именовање променљиве:

  • Име променљиве Ц ++ може имати само абецеде, бројеве и доње црте.
  • Име променљиве Ц ++ не може започети бројем.
  • Имена променљивих не би требало да почињу великим словом.
  • Назив променљиве који се користи у језику Ц ++ не може бити кључна реч. На пример, инт је кључна реч која се користи за означавање целих бројева.
  • Име променљиве Ц ++ може започети доњом цртом. Међутим, то се не сматра добром праксом.

Ц ++ променљиви типови података

Ц ++ дефинише читав низ примитивних типова

Празнина тип је не повезује вредности са њим и може се користити за само неколико околности. Најчешће је то тип повратка функција које не враћају вредност.

У аритметичке врсте укључују знакове, целе бројеве, логичке вредности, и бројеве у покретном зарезу. Аритметички тип ако се даље дели у 2 категорије

  1. Типови са покретним зарезом . Флоат (или плутајући тип) представљају децималне бројеве. ИЕЕЕ стандард одређује минимални број значајних цифара. Већина компајлера обично пружа већу прецизност од наведеног минимума. Обично су плутајући бројеви представљени са 32 бита, двоструки у 64 бита и дуги двоструки у 96 или 128 бита.
  2. Интегрални типови (који укључују знакове, целобројне и логичке типове). Булова тип има само две врсте вредности Труе или Фалсе. Постоји неколико типова знакова , од којих већина постоји као подршка интернационализацији. Најосновнији тип карактера је цхар. Цхар је исте величине као један машински бајт, што значи један бајт.

Тхе Интеграл типови могу бити потписан или непотписан.

Потписани тип : Они представљају негативне или позитивне бројеве (укључујући нулу). У потписаном типу, опсег мора бити равномерно подељен између вредности + ве и -ве. Тако ће 8-битни потписани знак садржавати вредности од -127 до 127.

Непотписани тип : У непотписаном типу све вредности су> = 0. 8-битни непотписани знак може садржати од 0 до 255 (оба укључују).

Назив променљиве или идентификатори

Идентификатори се могу састојати од неких слова, цифара и доњег знака или неке њихове комбинације. Дужина имена није ограничена.

Идентификатори морају

  • започињу словом или доњом цртом ('_').
  • И разликују велика и мала слова; велика и мала слова се разликују:

// дефинише четири различите инт променљиве

int guru99, gurU99, GuRu99, GURU99;

Језик Ц ++ је резервисао нека имена за употребу.

Постоје многе прихваћене конвенције за именовање променљивих у различитим програмским језицима. Придржавање ових конвенција може побољшати читљивост програма.

  • Идентификатор треба да пружи бар неку назнаку његовог значења.
  • Имена променљивих обично су мала-гуру99, а не Гуру99 или ГУРУ99.
  • Часови које дефинишемо обично почињу великим словом.
  • Идентификатори који садрже више речи треба да визуелно разликују сваку реч. На пример, гуру99_вебсите не гуру99вебсите.

Изјава и дефиниција променљиве Ц ++

Декларација променљиве чини име програму познато у обиму у коме је дефинисана. Пример:

int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};

Цонст Куалифиер у језику Ц ++

Претпоставимо да постоји променљива буффсизе која наводи број улаза које треба узети од корисника. Овде не желимо да променимо вредност буффсизе током читавог програма. Желимо да дефинишемо променљиву чија вредност знамо да се не би требало мењати.

У том случају користите кључну реч цонст

const int bufSize = 512; // input buffer size

Ово дефинише буфСизе као константу. Сваки покушај додељивања или промене буфСизе даје грешку.

Овде не можемо променити вредност цонст објекта након што га креирамо, он мора бити обавезно декларисан и иницијализован. У супротном, компајлер баца грешку.

const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint i = 42;const int ci = i; // ok: the value in i is copied into ci

Обим променљивих у Ц ++

Опсег је распон програма где променљива има значење. Углавном се исто име може користити за означавање различитих ентитета у различитим опсезима. Променљиве су видљиве од тренутка када су декларисане до краја обима у којем се њихова декларација појављује.

#include int main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum <

Овај програм дефинише 3 имена, наиме главно, збирно и вал. Користи име простора имена стд, заједно са два друга имена из тог простора имена-цоут и ендл.

  • Назив функције "маин" је дефинисан изван коврџавих заграда. Име функције главно, као и већина осталих имена дефинисаних изван функције, има глобални опсег. Што значи да су једном проглашена имена која имају глобални опсег доступна у целом програму.
  • Променљива сума је дефинисана у оквиру блока који је тело главне функције. Може му се приступити од тачке декларације и кроз остатак тела главне функције. Међутим, не изван ње. То значи да променљива сум има опсег блока .
  • Променљива вал је дефинисана у опсегу „фор статемент“. Може се лако користити у тој изјави, али не и другде у главној функцији. Има локални обим .

Угњежђени опсег

Опсег може садржати и друге домете. Садржани (или угнежђени) опсег се назива унутрашњим опсегом. Обим који садржи је спољни опсег.

#include using namespace std;// Program for illustration purposes only: It is bad style for a function// to use a global variable and also define a local variable with the same nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;}

Излаз # 1 појављује се пре локалне дефиниције поновне употребе. Дакле, овај излаз

израз је онај који користи поново употребљено име које је дефинисано у глобалном опсегу. Ова изјава даје резултате

42 0

Излаз бр. 2 јавља се након локалне дефиниције поновне употребе. Сада је у опсегу. Према томе, овај други излазни израз једноставно користи локални објекат који се зове поново коришћен, а не глобални и излази

0 0

Излаз # 3 замењује задата правила опсега помоћу оператора опсега. Глобални опсег нема име. Дакле, када оператор опсега (: :) има празну леву страну. То тумачи као захтев за преузимање имена на десној страни глобалног опсега. Дакле, израз користи глобалну поновну употребу и излазе

42 0

Конверзија променљивих типова

Променљива једне врсте може се претворити у другу. Позната је под називом „Конверзија типова“. Погледајмо правила за претварање различитих типова променљивих Ц ++:

Додељивање нон-боол варијабли боол даје фалсе ако је вредност 0, а труе у супротном.

bool b = 42; // b is true

Додељивање боол-а неком другом аритметичком типу даје 1 ако је тачка тачна и 0 ако је тачка нетачна.

bool b = true;int i = b; // i has value 1

Додељивање вредности с помичном зарезом променљивој типа инт даје вредност која је скраћена. Вредност која се чува је део испред децималне тачке.

int i = 3.14; // i has value 3

Додељивање инт вредности променљивој флоат типа резултује да разломљени део постане нула. Прецизност се обично губи ако цели број има више битова него што плутајућа променљива може да прими.

Int i=3;double pi = i; // pi has value 3.0

Ако покушавамо променљиву непотписаног типа доделити вредност изван опсега, резултат је остатак вредности% (модуло)

На пример, 8-битни непотписани тип цхар може садржати вредности од 0 до 255, укључујући закључно. Додељивање вредности изван овог опсега резултираће у томе што ће преводилац доделити остатак те вредности модулом 256. Према томе, према горњој логици, додељивање -1 8-битном непотписаном знаку даје том објекту вредност 255.

unsigned char c = -1; // assuming 8-bit chars, c has value 255

Ако покушавамо да доделимо вредност изван домета објекту потписаног типа, резултат је непредвидљив. Није дефинисано. Изгледа да програм ради споља, или се може срушити или произвести вредности смећа.

signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined

Компајлер примењује ове исте врсте конверзија када користимо вредност једног типа где се очекује вредност другог типа.

int i = 42;if (i) // condition will evaluate as truei = 0;

Ако је ова вредност = 0, онда је услов нетачан; све остале вредности (које нису нула) дају тачно. По истом концепту, када користимо боол у ​​аритметичком изразу, његова вредност се увек претвара у 0 или 1. Као резултат, употреба боол-а у аритметичком изразу обично је готово сигурно нетачна.

Опрез: Не мешајте потписане и непотписане типове

Изрази који комбинују потписано и непотписано могу дати изненађујуће и погрешне резултате када је потписана вредност негативна. Као што је горе речено, потписане вредности се аутоматски претварају у непотписане.

На пример, у аритметичком изразу попут

x* y

Ако је к -1, а и 1, а ако су к и и инт, тада је вредност, како се и очекивало, -1.

Ако је к инт, а и непотписано, тада вредност овог израза зависи од тога колико битова има цели број на машини за компајлирање. На нашој машини овај израз даје 4294967295.

Региструјте променљиве

Приступ варијаблама регистра је бржи у односу на меморијске променљиве. Дакле, променљиве које се често користе у програму Ц ++ могу се ставити у регистре помоћу кључне речи регистер . Кључна реч регистер говори компајлеру да дату променљиву ускладишти у регистар. Избор компајлера је да ли ће га ставити у регистар или не. Генерално, сами компајлери раде различите оптимизације које укључују стављање неких променљивих у регистар. Не постоји ограничење броја променљивих регистра у програму Ц ++. Али компајлер можда неће чувати променљиву у регистру. То је зато што је регистрска меморија врло ограничена и ОС је најчешће користи.

Дефинисати:

register int i;

Коментари

Коментари су делови кода које је компајлер игнорисао. Омогућава програмеру да прави белешке у релевантним областима изворног кода / програма. Коментари долазе у блоковском облику или у једном реду. Коментари програма су објашњења. Може се укључити у Ц ++ код који помаже свима који читају његов изворни код. Сви програмски језици дозвољавају неки облик коментара. Ц ++ подржава коментаре у једном реду и у више редова.

  • Једноредни коментари су они који почињу са // и настављају се до краја реда. Ако је последњи знак у реду за коментар \, онда ће се коментар наставити у следећем реду.
  • Вишередни коментари су они који почињу са / * и завршавају са * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Секвенце бекства

Неки знакови, попут повратног простора и контролних знакова, немају видљиву слику. Такви знакови су познати као знакови који се не могу штампати. Остали знакови (једноструки и двоструки наводници, упитник и коса црта) имају посебно значење у многим програмским језицима.

Наши програми не могу директно да користе ниједан од ових знакова. Уместо тога, можемо користити излазну секвенцу да представимо такав знак. Редослед бекства започиње обрнутом косом цртом.

Програмски језик Ц ++ дефинише неколико секвенци излаза:

Шта ради?

Карактер

Нова линија

\ н

Вертикални језичак

\ в

Повратна црта

\\

Превоз Повратак

\ р

Хоризонтални језичак

\ т

Бацкспаце

\ б

Знак питања

\?

Облик хране

\ ф

Упозорење (звоно)

\ а

Двоструки наводник

\ "

Појединачни наводник

\ '

Користимо секвенцу за бекство као да је реч о једном карактеру:

cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newline

Такође можемо да напишемо генерализоване секвенце \ к праћене једном или више хексадецималних цифара. Или користимо знак \ иза којег следе једна, две или три окталне цифре. Генерализована секвенца за излазак представља нумеричку вредност знака. Неки примери (под претпоставком латиничног скупа знакова):

\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')

Можемо користити унапред дефинисане излазне секвенце, као што користимо било који други знак.

cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newline

Резиме

  • Ц ++ променљива пружа нам именовану могућност складиштења.
  • Типови променљивих Ц ++: инт, доубле, цхар, флоат, стринг, боол итд.
  • Садржај (или угнежђени) опсег се назива унутрашњим опсегом, а обим који садржи садржи спољни опсег.
  • Променљива једне врсте може се претворити у другу. Позната је под називом „Конверзија типова“.
  • Приступ варијаблама регистра је бржи у односу на меморијске променљиве.
  • Коментари су делови кода које је компајлер игнорисао.
  • Неки знакови, попут повратног простора и контролних знакова, немају видљиву слику.