òaáëèöå 1.5 ïðèâåäåí ñïèñîê îñíîâíûõ îïåðaöèé, îïðåäåëåííûõ â яçûêå C++, â ñîîòâåòñòâèè ñ èõ ïðèîðèòåòaìè (ïî óáûâaíèþ ïðèîðèòåòîâ, îïåðaöèè ñ ðaçíû- ìè ïðèîðèòåòaìè ðaçäåëåíû ÷åðòîé). Îñòaëüíûå îïåðaöèè áóäóò ââîäèòüñя ïî ìåðå èçëîæåíèя. Ïîëíûé ñïèñîê îïåðaöèé ïðèâåäåí â ïðèëîæåíèè 1.
 ñîîòâåòñòâèè ñ êîëè÷åñòâîì îïåðaíäîâ, êîòîðûå èñïîëüçóþòñя â îïåðaöèяõ, îíè äåëяòñя ía óíaðíûå (îäèí îïåðaíä), áèíaðíûå (äâa îïåðaíäa) è òåðíaðíóþ (òðè îïåðaíäa).
Âñå ïðèâåäåííûå â òaáëèöå îïåðaöèè, êðîìå óñëîâíîé è sizeof, ìîãóò áûòü ïåðå- ãðóæåíû. Î ïåðåãðóçêå îïåðaöèé ðaññêaçûâaåòñя ía ñ. 189.
Таблица 1.5. Основные операции языка С++
Операция
|
Краткое описание
|
Унарные операции
|
++
|
óâåëè÷åíèå ía 1
|
––
|
óìåíüøåíèå ía 11
|
sizeof
|
ðaçìåð
|
~
|
ïîðaçðяäíîå îòðèöaíèå
|
!
|
ëîãè÷åñêîå îòðèöaíèå
|
–
|
aðèôìåòè÷åñêîå îòðèöaíèå (óíaðíûé ìèíóñ)
|
+
|
óíaðíûé ïëþñ
|
&
|
âçяòèå aäðåña
|
*
|
ðaçaäðåñaöèя
|
new
|
âûäåëåíèå ïaìяòè
|
delete
|
îñâîáîæäåíèå ïaìяòè
|
(type)
|
ïðåîáðaçîâaíèå òèïa
|
Бинарные и тернарная операции
|
*
|
óìíîæåíèå
|
/
|
äåëåíèå
|
%
|
îñòaòîê îò äåëåíèя
|
+
|
ñëîæåíèå
|
–
|
âû÷èòaíèå
|
<<
|
ñäâèã âëåâî
|
>>
|
ñäâèã âïðaâî
|
<
|
ìåíüøå
|
<=
|
ìåíüøå èëè ðaâíî
|
>
|
áîëüøå
|
>=
|
áîëüøå èëè ðaâíî
|
==
|
ðaâíî
|
!=
|
íå ðaâíî
|
&
|
ïîðaçðяäíaя êîíúþíêöèя (È)
|
^
|
ïîðaçðяäíîå èñêëþ÷aþùåå ÈËÈ
|
|
|
ïîðaçðяäíaя äèçúþíêöèя (ÈËÈ)
|
&&
|
ëîãè÷åñêîå È
|
||
|
ëîãè÷åñêîå ÈËÈ
|
1 Ïðîáåëû ìåæäó ñèìâîëaìè âíóòðè îïåðaöèè íå äîïóñêaþòñя.
Операция
|
Краткое описание
|
?:
|
óñëîâíaя îïåðaöèя (òåðíaðíaя)
|
=
|
ïðèñâaèâaíèå
|
*=
|
óìíîæåíèå ñ ïðèñâaèâaíèåì
|
/=
|
äåëåíèå ñ ïðèñâaèâaíèåì
|
%=
|
îñòaòîê îòäåëåíèя ñ ïðèñâaèâaíèåì
|
+=
|
ñëîæåíèå ñ ïðèñâaèâaíèåì
|
–=
|
âû÷èòaíèå ñ ïðèñâaèâaíèåì
|
<<=
|
ñäâèã âëåâî ñ ïðèñâaèâaíèåì
|
>>=
|
ñäâèã âïðaâî ñ ïðèñâaèâaíèåì
|
&=
|
ïîðaçðяäíîå È ñ ïðèñâaèâaíèåì
|
|=
|
ïîðaçðяäíîå ÈËÈ ñ ïðèñâaèâaíèåì
|
^=
|
ïîðaçðяäíîå èñêëþ÷aþùåå ÈËÈ ñ ïðèñâaèâaíèåì
|
,
|
ïîñëåäîâaòåëüíîå âû÷èñëåíèå
|
Ðaññìîòðèì îñíîâíûå îïåðaöèè ïîäðîáíåå.
Îïåðàöèè óâåëè÷åíèÿ è óìåíüøåíèÿ íà 1 (++ è --). Ýòè îïåðaöèè, íaçûâaåìûå òaêæå èíêðåìåíòîì è äåêðåìåíòîì, èìåþò äâå ôîðìû çaïèñè — ïðåôènñíóþ, êîãäa îïåðaöèя çaïèñûâaåòñя ïåðåä îïåðaíäîì, è ïîñòôènñíóþ.  ïðåôèêñíîé ôîðìå ñía÷aëa èçìåíяåòñя îïåðaíä, a çaòåì åãî çía÷åíèå ñòaíîâèòñя ðåçóëüòè- ðóþùèì çía÷åíèåì âûðaæåíèя, a â ïîñòôèêñíîé ôîðìå çía÷åíèåì âûðaæåíèя яâëяåòñя èñõîäíîå çía÷åíèå îïåðaíäa, ïîñëå ÷åãî îí èçìåíяåòñя.
include int main(){
intx= 3,y= 3;
printf("Çía÷åíèå ïðåôèêñíîãî âûðaæåíèя: %d\n", ++x); printf("Çía÷åíèå ïîñòôèêñíîãî âûðaæåíèя: %d\n", y++); printf("Çía÷åíèå õ ïîñëå ïðèðaùåíèя: %d\n", x); printf("Çía÷åíèå ó ïîñëå ïðèðaùåíèя: %d\n", ó); return 0;
}
Ðåçóëüòaò ðaáîòû ïðîãðaììû:
Çía÷åíèå ïðåôèêñíîãî âûðaæåíèя: 4 Çía÷åíèå ïîñòôèêñíîãî âûðaæåíèя: 3 Çía÷åíèå õ ïîñëå ïðèðaùåíèя: 4 Çía÷åíèå ó ïîñëå ïðèðaùåíèя: 4
Îïåðaíäîì îïåðaöèè èíêðåìåíòa â îáùåì ñëó÷aå яâëяåòñя òaê íaçûâaåìîå L-çía-
÷åíèå (L-value). Òaê îáîçía÷aåòñя ëþáîå âûðaæåíèå, aäðåñóþùåå íåêîòîðûé ó÷a- ñòîê ïaìяòè, â êîòîðûé ìîæíî çaíåñòè çía÷åíèå. Íaçâaíèå ïðîèçîøëî îò îïåða- öèè ïðèñâaèâaíèя, ïîñêîëüêó èìåííî åå ëåâaя (Left) ÷añòü îïðåäåëяåò, â êaêóþ
îáëañòü ïaìяòè áóäåò çaíåñåí ðåçóëüòaò îïåðaöèè. Ïåðåìåííaя яâëяåòñя ÷añò- íûì ñëó÷aåì L-çía÷åíèя.
Îïåðàöèÿ îïðåäåëåíèÿ ðàçìåðà sizeof ïðåäíaçía÷åía äëя âû÷èñëåíèя ðaçìåða îáúåêòa èëè òèïa â áaéòaõ, è èìååò äâå ôîðìû:
sizeof âûðàæåíèå sizeof ( òèï )
Ïðèìåð:
include int main(){
floatx= 1;
cout << "sizeof (float) :" << sizeof (float); cout << "\nsizeof x :" << sizeof x;
cout << "\nsizeof (x + 1.0) :" << sizeof (x + 1.0);
return 0;
}
Ðåçóëüòaò ðaáîòû ïðîãðaììû:
sizeof (float) : 4 sizeofx:4 sizeof (x + 1.0) : 8
Ïîñëåäíèé ðåçóëüòaò ñâяçaí ñ òåì, ÷òî âåùåñòâåííûå êîíñòaíòû ïî óìîë÷aíèþ èìåþò òèï double, ê êîòîðîìó, êaê ê áîëåå äëèííîìó, ïðèâîäèòñя òèï ïåðåìåííîé x è âñåãî âûðaæåíèя. Cêîáêè íåîáõîäèìû äëя òîãî ÷òîáû âûðaæåíèå, ñòîяùåå â íèõ, âû÷èñëяëîñü ðaíüøå îïåðaöèè ïðèâåäåíèя òèïa, èìåþùåé áîëüøèé ïðè- îðèòåò, ÷åì ñëîæåíèå.
Îïåðàöèè îòðèöàíèÿ (–, ! è ~). Àðèôìåòè÷åñnîå îòðèöaíèå (óíaðíûé ìèíóñ –) èçìåíяåò çíaê îïåðaíäa öåëîãî èëè âåùåñòâåííîãî òèïa ía ïðîòèâîïîëîæíûé. Ëîãè÷åñnîå îòðèöaíèå (!) äaåò â ðåçóëüòaòå çía÷åíèå 0, åñëè îïåðaíä åñòü èñòèía (íå íóëü), è çía÷åíèå 1, åñëè îïåðaíä ðaâåí íóëþ. Îïåðaíä äîëæåí áûòü öåëîãî èëè âåùåñòâåííîãî òèïa, a ìîæåò èìåòü òaêæå òèï óêaçaòåëü. Ïîðaçðяäíîå îòðè- öaíèå (~), ÷añòî íaçûâaåìîå ïîáèòîâûì, èíâåðòèðóåò êaæäûé ðaçðяä â äâîè÷íîì ïðåäñòaâëåíèè öåëî÷èñëåííîãî îïåðaíäa.
Äåëåíèå (/) è îñòàòîê îò äåëåíèÿ (%). Îïåðaöèя äåëåíèя ïðèìåíèìa ê îïåðaíäaì aðèôìåòè÷åñêîãî òèïa. Åñëè îáa îïåðaíäa öåëî÷èñëåííûå, ðåçóëüòaò îïåðaöèè îêðóãëяåòñя äî öåëîãî ÷èñëa, â ïðîòèâíîì ñëó÷aå òèï ðåçóëüòaòa îïðåäåëяåòñя ïðaâèëaìè ïðåîáðaçîâaíèя (ñì. ðaçäåë «Âûðaæåíèя», ñ. 7–38, è ïðèëîæåíèå 3). Îïåðaöèя îñòaòna îò äåëåíèя ïðèìåíяåòñя òîëüêî ê öåëî÷èñëåííûì îïåðaíäaì. Çíaê ðåçóëüòaòa çaâèñèò îò ðåaëèçaöèè.
include int main(){
intx= 11,y= 4; floatz= 4;
printf("Ðåçóëüòaòû äåëåíèя: %d %f\n", x/y, x/z); printf("Îñòaòîê: %d\n", x%y);
return 0;
}
Ðåçóëüòaò ðaáîòû ïðîãðaììû:
Ðåçóëüòaòû äåëåíèя: 2 2.750000
Îñòaòîê: 3
Îïåðaöèè ñäâèãa (<< è >>) ïðèìåíяþòñя ê öåëî÷èñëåííûì îïåðaíäaì. Îíè ñäâèãaþò äâîè÷íîå ïðåäñòaâëåíèå ïåðâîãî îïåðaíäa âëåâî èëè âïðaâî ía êîëè÷å- ñòâî äâîè÷íûõ ðaçðяäîâ, çaäaííîå âòîðûì îïåðaíäîì. Ïðè ñäâèãå âëåâî (<<) îñâî- áîäèâøèåñя ðaçðяäû îáíóëяþòñя. Ïðè ñäâèãå âïðaâî (>) îñâîáîäèâøèåñя áèòû çaïîëíяþòñя íóëяìè, åñëè ïåðâûé îïåðaíä áåççíaêîâîãî òèïa, è çíaêîâûì ðaçðя- äîì â ïðîòèâíîì ñëó÷aå. Îïåðaöèè ñäâèãa íå ó÷èòûâaþò ïåðåïîëíåíèå è ïîòåðþ çía÷èìîñòè.
Îïåðaöèè îòíîøåíèя (<, <=, >, >=, = =, !=) ñðaâíèâaþò ïåðâûé îïåðaíä ñî âòî- ðûì. Îïåðaíäû ìîãóò áûòü aðèôìåòè÷åñêîãî òèïa èëè óêaçaòåëяìè. Ðåçóëüòaòîì îïåðaöèè яâëяåòñя çía÷åíèå true èëè false (ëþáîå çía÷åíèå, íå ðaâíîå íóëþ, èí- òåðïðåòèðóåòñя êaê true). Îïåðaöèè ñðaâíåíèя ía ðaâåíñòâî è íåðaâåíñòâî èìå- þò ìåíüøèé ïðèîðèòåò, ÷åì îñòaëüíûå îïåðaöèè ñðaâíåíèя.
ВНИМАНИЕ
Îáðaòèòå âíèìaíèå ía ðaçíèöó ìåæäó îïåðaöèåé ïðîâåðêè ía ðaâåíñòâî (==) è îïåðaöèåé ïðèñâaèâaíèя (=), ðåçóëüòaòîì êîòîðîé яâëяåòñя çía÷åíèå, ïðèñâîåííîå ëåâîìó îïåðaíäó.
Do'stlaringiz bilan baham: |