register – auto спецификаторына ұқсас, бірақ мұнда айнымалыға, мүмкіндігінше, процессор регистрлерінен орын (жады) бөлінеді. Егер компи- ляторда мұндай мүмкіндік жоқ болса, айнымалылар auto сияқты өңделеді.
int a; // 1 а ауқымды айнымалысы int main() {
int b; // 2 b жергiлiктi айнымалысы
extern int x; // 3 х айнымалысы басқа жерде
static int с; a = 1;
int a; a = 2;
::a = 3;
} return 0;
// анықталған
// 4 с жергілікті статикалық
// айнымалысы
// 5 ауқымды айнымалыны меншіктеу
// 6 а жергілікті айнымалысы
// 7 жергілікті айнымалыны меншіктеу
// 8 ауқымды айнымалыны меншіктеу
int x = 4; //9 х-ті анықтау жəне
// инициалдау
Бұл мысалда а ауқымды айнымалысы барлық блоктан тыс анықталған. Ол үшін жады программа жұмысының басында мəліметтер сегментінде бөлінеді, ал оның əрекет ету аймағы бүкіл программа көлемін қамтиды. Көріну аймағы
6-8 жолдан басқа барлық программа жолдары, өйткені 6-жолда дəл осындай атпен берілген жергілікті айнымалы анықталады, мұның əрекет ету аймағы си- патталу нүктесінен (6-жолдан) басталып, блоктың соңында аяқталады. b жəне с – жергілікті айнымалылар, олардың көріну аймағы – блок іші, бірақ өмірлік
1Егер айнымалы дəл сол операторда инициалданса, онда extern спецификаторы елеусіз қалады.
кезеңдері əртүрлі: b үшін жады стектен блокқа кіру кезінде бөлінеді де, одан шығарда босатылады, ал с айнымалысы мəліметтер сегментінде орналасады да, ол программаның жұмысы аяқталғанша сақталады.
Егер айнымалыларды анықтау кезінде бастапқы мəн бірден берілмесе, компилятор ауқымды жəне статикалық айнымалыларға өз типтеріне сəйкес нөл мəнін меншіктейді. Ал автоматты айнымалылар инициалданбайды.
Айнымалының аты өзінің əрекет ету аймағында қайталанбайтын бірегей болуы тиіс (мысалы, бір блокта екі айнымалының аты бірдей болуы мүмкін емес). Əрекет ету аймақтары толығырақ 103 б. айтылады.
КЕҢЕС
Айнымалыларға мағынасына сəйкес лайықты ат ойлап табуға уақыт үнемдемеңіздер. Атау сақталатын шаманың мағынасын көрсетуі тиіс, сонымен қатар ол жеңіл есте қалатындай болғаны дұрыс, олардың аттары бір-бірімен шатастыруға болатын сим- волдардан, мысалы 1, l (кіші L) немесе I (үлкен і), тұрмауы тиіс. Берілген атаудың бөліктерін ажырату үшін астын сызу белгісін қолдануға болады. Айнымалыларға шетелдік слэнг сөздерден тұратын атау бермеуге тырысыңыз – халықтың «қайыққа қандай ат берсеңіз, солай жүзеді» деген мəтел сөзі есте болсын. Көбінесе əрекет ету аймағы кеңірек айнымалыларға ұзынырақ атаулар беріледі (оның тип префиксі болғаны жөн), ал программаның бірнеше жолында ғана əрекет ететін айнымалылар үшін бір əріптен тұратын ат қойып, оған түсініктеме беру жеткілікті.
Айнымалыны сипаттау жариялау немесе анықтау түрінде берілуі мүмкін. Жариялау компиляторға айнымалы типі мен жады класы туралы мəлімет береді, ал анықтама құрамында компиляторға айнымалы типіне сəйкес жады бөлу туралы нұсқау беріледі. C++ тілінде жариялаулардың басым бөлігі анықтамалар да болып табылады. Жоғарыдағы мысалда тек үшінші сипаттама ғана анықтамаға жатпайтын жариялау болып табылады.
Айнымалы бірнеше рет жариялануы мүмкін, бірақ программаның тек бір жерінде ғана анықталады, себебі жариялау тек айнымалының қасиеттерін сипат- тайды, ал анықтама оны жадының нақты бір аймағымен байланыстырады.
Операциялар
1.5-кестеде C++ тілінде анықталған негізгі операциялар тізімі өздерінің басымдықтарына сəйкес (басымдықтардың кемуі бойынша, əртүрлі басымдықты операциялар сызықтармен бөлініп берілген) көрсетілген. Басқа операциялар жайлы оларды түсіндіру барысында айтылады. Операциялардың толық тізімі 1-қосымшада көрсетілген.
Құрамындағы операндтар санына сəйкес операциялар унарлы (бір опе- ранд), бинарлы (екі операнд) жəне тернарлы (үш операнд) болып бөлінеді.
Кестеде келтірілген операциялар, sizeof жəне шартты операциядан басқалары, асыра жүктелуі мүмкін. Операциялардың асыра жүктелуі туралы келесі бөлімдерде (205 б.) ақпарат беріледі.
Енді негізгі операцияларды толығырақ қарастырайық.
1.5-кесте. C++ тілінің негізгі операциялары
Достарыңызбен бөлісу: |