Операции языка С++
Îïåðaöèè ïðèâåäåíû â ïîðяäêå óáûâaíèя ïðèîðèòåòa. Îïåðaöèè ñ ðaçíûìè ïðè- îðèòåòaìè ðaçäåëåíû ÷åðòîé.
Операция
|
Краткое описание
|
Унарные операции
::
|
äîñòóï ê îáëañòè âèäèìîñòè
|
.
|
âûáîð
|
->
|
âûáîð
|
[]
|
èíäåêñaöèя
|
()
|
âûçîâ ôóíêöèè
|
<òèï>( )
|
êîíñòðóèðîâaíèå
|
++
|
ïîñòôèêñíûé èíêðåìåíò
|
––
|
ïîñòôèêñíûé äåêðåìåíò
|
typeid
|
èäåíòèôèêaöèя òèïa
|
dynamiC_Cast
|
ïðåîáðaçîâaíèå òèïa ñ ïðîâåðêîé ía ýòaïå âûïîëíåíèя
|
statiC_Cast
|
ïðåîáðaçîâaíèå òèïa ñ ïðîâåðêîé ía ýòaïå êîìïèëяöèè
|
reinterpret_Cast
|
ïðåîáðaçîâaíèå òèïa áåç ïðîâåðêè
|
COnst_Cast
|
êîíñòaíòíîå ïðåîáðaçîâaíèå òèïa
|
sizeOf
|
ðaçìåð îáúåêòa èëè òèïa
|
––
|
ïðåôèêñíûé äåêðåìåíò
|
++
|
ïðåôèêñíûé èíêðåìåíò
|
~
|
ïîðaçðяäíîå îòðèöaíèå
|
!
|
ëîãè÷åñêîå îòðèöaíèå
|
Приложение 1. Операции языка С++ 385
Операция
|
Краткое описание
|
– aðèôìåòè÷åñêîå îòðèöaíèå (óíaðíûé ìèíóñ)
|
+ óíaðíûé ïëþñ
|
& âçяòèå aäðåña
|
* ðaçaäðåñaöèя
|
new âûäåëåíèå ïaìяòè
|
delete îñâîáîæäåíèå ï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íèåì
|
386 Приложение 1. Операции языка С++
Операция
|
Краткое описание
|
%=
|
îñòaòîê îòäåëåíèя ñ ïðèñâaèâaíèåì
|
+=
|
ñëîæåíèå ñ ïðèñâaèâaíèåì
|
–=
|
âû÷èòaíèå ñ ïðèñâaèâaíèåì
|
<<=
|
ñäâèã âëåâî ñ ïðèñâaèâaíèåì
|
>>=
|
ñäâèã âïðaâî ñ ïðèñâaèâaíèåì
|
&=
|
ïîðaçðяäíîå È ñ ïðèñâaèâaíèåì
|
|=
|
ïîðaçðяäíîå ÈËÈ ñ ïðèñâaèâaíèåì
|
^=
|
ïîðaçðяäíîå èñêëþ÷aþùåå ÈËÈ ñ ïðèñâaèâaíèåì
|
thrOw
|
èñêëþ÷åíèå
|
,
|
ïîñëåäîâaòåëüíîå âû÷èñëåíèå
|
ПРИЛОЖЕНИЕ 2
Спецификации формата
для функций семейства printf
Спецификация
|
Пояснение
|
C
|
aðãóìåíò ðaññìaòðèâaåòñя êaê îòäåëüíûé ñèìâîë
|
d, i
|
aðãóìåíò ïðåîáðaçóåòñя ê äåñяòè÷íîìó âèäó
|
e, E
|
aðãóìåíò, ðaññìaòðèâaåìûé êaê ïåðåìåííaя òèïa flOat èëè dOuble, ïðåîáðaçóåòñя â äåñяòè÷íóþ ôîðìó â âèäå [-]m.nnnnnne[+-]õõ, ãäå äëèía ñòðîêè èç n îïðåäåëяåòñя óêaçaííîé òî÷íîñòüþ (ñì. ñëåä. òaáë.). Òî÷íîñòü ïî óìîë÷aíèþ ðaâía 6
|
f
|
aðãóìåíò, ðaññìaòðèâaåìûé êaê ïåðåìåííaя òèïa flOat èëè dOuble, ïðåîáðaçóåòñя â äåñяòè÷íóþ ôîðìó â âèäå [-]mmm.nnnnn, ãäå äëèía ñòðîêè èç n îïðåäåëяåòñя óêaçaííîé òî÷íîñòüþ (ñì. ñëåä. òaáë.). Òî÷íîñòü ïî óìîë÷aíèþ ðaâía 6
|
g, G
|
èñïîëüçóåòñя ôîðìaò %e èëè %f, êîòîðûé êîðî÷å; íåçía÷aùèå íóëè íå ïå÷aòaþòñя
|
O
|
aðãóìåíò ïðåîáðaçóåòñя â áåççíaêîâóþ âîñüìåðè÷íóþ ôîðìó (áåç ëèäèðóþùåãî íóëя)
|
p
|
âûâîä óêaçaòåëя â øåñòíaäöaòåðè÷íîì ôîðìaòå (ýòa ñïåöèôèêaöèя íå âõîäèò â ñòaíäaðò, íî îía ñóùåñòâóåò ïðaêòè÷åñêè âî âñåõ ðåaëèçaöèяõ)
|
s
|
aðãóìåíò яâëяåòñя ñòðîêîé: ñèìâîëû ñòðîêè ïå÷aòaþòñя äî òåõ ïîð, ïîêa íå áóäåò äîñòèãíóò íóëåâîé ñèìâîë èëè íå áóäåò íaïå÷aòaíî êîëè÷åñòâî ñèìâîëîâ, óêaçaííîå â ñïåöèôèêaöèè òî÷íîñòè
|
u
|
aðãóìåíò ïðåîáðaçóåòñя â áåççíaêîâóþ äåñяòè÷íóþ ôîðìó
|
x, X
|
aðãóìåíò ïðåîáðaçóåòñя â áåççíaêîâóþ øåñòíaäöaòåðè÷íóþ ôîðìó (áåç ëèäèðóþùèõ 0õ)
|
%
|
âûâîäèòñя ñèìâîë %
|
388 Приложение 2. Спецификации формата для функций семейства printf
Модификаторы формата
Ìîäèôèêaòîðû ôîðìaòa ïðèìåíяþòñя äëя óïðaâëåíèя øèðèíîé ïîëя, îòâî- äèìîãî äëя ðaçìåùåíèя çía÷åíèя. Ìîäèôèêaòîðû — ýòî îäíî èëè äâa ÷èñëa, ïåð- âîå èç êîòîðûõ çaäaåò ìèíèìaëüíîå êîëè÷åñòâî ïîçèöèé, îòâîäèìûõ ïîä ÷èñëî, a âòîðîå — ñêîëüêî èç ýòèõ ïîçèöèé îòâîäèòñя ïîä äðîáíóþ ÷añòü ÷èñëa (òî÷- íîñòü). Åñëè óêaçaííîãî êîëè÷åñòâa ïîçèöèé äëя ðaçìåùåíèя çía÷åíèя íåäîñòa- òî÷íî, aâòîìaòè÷åñêè âûäåëяåòñя áîëüøåå êîëè÷åñòâî ïîçèöèé:
%-minC èëè %minC;
%-min.preCisiOnC èëè %min.preCisiOnC.
Çäåñü C — ñïåöèôèêaöèя ôîðìaòa èç ïðèâåäåííîé âûøå òaáëèöû, min — ÷èñëî, çaäaþùåå ìèíèìaëüíóþ øèðèíó ïîëя. Cìûñë ìîäèôèêaòîða preCisiOn, òaêæå ça- äaâaåìîãî äåñяòè÷íûì ÷èñëîì, çaâèñèò îò ñïåöèôèêaöèè ôîðìaòa, ñ êîòîðîé îí èñïîëüçóåòñя:
ïðè âûâîäå ñòðîêè (ñïåöèôèêaöèя %s) preCisiOn óêaçûâaåò ìaêñèìaëüíîå ÷èñ- ëî ñèìâîëîâ äëя âûâîäa;
ïðè âûâîäå âåùåñòâåííîãî ÷èñëa (ñïåöèôèêaöèè %f èëè %e) preCisiOn óêaçû- âaåò êîëè÷åñòâî öèôð ïîñëå äåñяòè÷íîé òî÷êè;
ïðè âûâîäå öåëîãî ÷èñëa (ñïåöèôèêaöèè %d èëè %i), preCisiOn óêaçûâaåò ìè- íèìaëüíîå êîëè÷åñòâî âûâîäèìûõ öèôð. Åñëè ÷èñëî ïðåäñòaâëяåòñя ìåíü- øèì ÷èñëîì öèôð, ÷åì óêaçaíî â preCisiOn, âûâîäяòñя âåäóùèå (ía÷aëüíûå) íóëè.
Cèìâîë ìèíóñ (–) óêaçûâaåò ía òî, ÷òî çía÷åíèå âûðaâíèâaåòñя ïî ëåâîìó êðaþ è, åñëè íóæíî, äîïîëíяåòñя ïðîáåëaìè ñïðaâa. Ïðè îòñóòñòâèè ìèíóña çía÷åíèå âûðaâíèâaåòñя ïî ïðaâîìó êðaþ è äîïîëíяåòñя ïðîáåëaìè ñëåâa.
Ïåðåä ñïåöèôèêaöèåé ìîãóò èñïîëüçîâaòüñя ïðåôènñû l è h, íaïðèìåð, %lf, %hu.
Ïðåôèêñ h ñ òèïaìè d, i, O, x è X óêaçûâaåò ía òî, ÷òî òèï aðãóìåíòa shOrt int, a ñ òèïîì u — shOrt unsigned int.
Ïðåôèêñ l ñ òèïaìè d, i, O, x è X óêaçûâaåò ía òî, ÷òî òèï aðãóìåíòa lOng int, ñ òè- ïîì u — lOng unsigned int, a ñ òèïaìè e, E, f, g è G — ÷òî òèï aðãóìåíòa dOuble, a íå flOat.
Ïðèìåð:
inClude int main(){
int int1 = 45, int2 = 13; flOat f = 3.621;
dOuble dbl = 2.23;
Char Ch = 'z', *str = "ramambahari";
printf("int1 = %d| int2 = %3d| int2 = %-4d|\n", int1, int2, int2); printf("int1 = %X| int2 = %3x| int2 = %4O|\n", int1, int2, int2); printf("f = %f| f = %4.2f| f = %6.1f|\n", f, f, f);
printf("f = %g| f = %e| f = %+E|\n", f, f, f);
printf("dbl = %5.2lf| dbl = %e| dbl = %4.1G|\n", dbl, dbl, dbl); printf("Ch = %C| Ch = %3C|\n", Ch, Ch);
Приложение 2. Спецификации формата для функций семейства printf 389
printf("str = %14s|\nstr = %-14s|\nstr = %s|\n", str, str, str); return 0;
}
Ðåçóëüòaò ðaáîòû ïðîãðaììû:
int1 = 45| int2 = 13| int2 = 13 | int1 = 2D| int2 = d| int2 = 15 | f = 3.621000| f = 3.62 | f = 3.6 |
f = 3.621 | f = 3.621000e+000 | f = +3.621000E+000|
dbl = 2.23 | dbl = 2.230000e+000 | dbl = 2 | Ch= z| Ch=z |
str = ramambahari| str = ramambahari| str = ramambahari|
ПРИЛОЖЕНИЕ 3
Арифметические преобразования типов
Ïðåîáðaçîâaíèя òèïîâ âûïîëíяþòñя, åñëè îïåðaíäû, âõîäяùèå â âûðaæåíèя, èìåþò ðaçëè÷íûå òèïû. Íèæå ïðèâåäåía ïîñëåäîâaòåëüíîñòü ïðåîáðaçîâaíèé.
Ëþáûå îïåðaíäû òèïa Char, unsigned Char èëè shOrt ïðåîáðaçóþòñя ê òèïó int
ïî ïðaâèëaì:
Char ðañøèðяåòñя íóëåì èëè çíaêîì â çaâèñèìîñòè îò óìîë÷aíèя äëя Char;
unsigned Char ðañøèðяåòñя íóëåì;
signed Char ðañøèðяåòñя çíaêîì;
shOrt, unsigned shOrt è enum ïðè ïðåîáðaçîâaíèè íå èçìåíяþòñя.
Çaòåì ëþáûå äâa îïåðaíäa ñòaíîâяòñя ëèáî int, ëèáî flOat, dOuble èëè lOng dOuble.
Åñëè îäèí èç îïåðaíäîâ èìååò òèï lOng dOuble, òî äðóãîé ïðåîáðaçóåòñя ê òèïó
lOng dOuble.
Åñëè îäèí èç îïåðaíäîâ èìååò òèï dOuble, òî äðóãîé ïðåîáðaçóåòñя ê òèïó
dOuble.
Åñëè îäèí èç îïåðaíäîâ èìååò òèï flOat, òî äðóãîé ïðåîáðaçóåòñя ê òèïó
flOat.
Èía÷å, åñëè îäèí èç îïåðaíäîâ èìååò òèï unsigned lOng, òî äðóãîé ïðåîáðaçó- åòñя ê òèïó unsigned lOng.
Èía÷å, åñëè îäèí èç îïåðaíäîâ èìååò òèï lOng, òî äðóãîé ïðåîáðaçóåòñя ê òèïó
lOng.
Èía÷å, åñëè îäèí èç îïåðaíäîâ èìååò òèï unsigned, òî äðóãîé ïðåîáðaçóåòñя ê òèïó unsigned.
Èía÷å îáa îïåðaíäa äîëæíû èìåòü òèï int.
Òèï ðåçóëüòaòa òîò æå, ÷òî è òèï ó÷añòâóþùèõ â âûðaæåíèè îïåðaíäîâ.
Do'stlaringiz bilan baham: |