Аломатҳои амалҳо дар С++

Ба дигарон равон намоед

Аломатҳои амалҳо.

Аломатҳои амалҳо барои тартиб додани ифодаҳо истифода бурда мешаванд. Ифода ин қоида барои ба даст овардани қимат аст. Як аломат дар ифодаҳои гуногун истифода бурда шуда, маъноҳои гуногун дошта метавонад, ки аз рӯи матни ифода муайян карда мешавад. Барои тасвири аломатҳои амалҳо якчанд рамзҳо истифода бурда мешаванд. Дар забони С++ амалҳои зерин мавҷуданд:

[]().->++
&*+~!
sizeof/%<< >> 
<=>===!=^
|&&||?:=*=
/=%=+=-=<<=>>=
&=^=|=,###
::.*->*newdeletetypeid

Баъзе ин амалҳоро муфассалтар дида мебароем.

Амалҳои унарӣ (якэлемента; аз як операнд иборатбуда):

&амали гирифтани адреси элемент (операнд);
*амали муроҷиат ба воситаи адрес;
амали тарҳи унарӣ, аломати операндро иваз мекунад;
!инкори мантиқӣ;
++ба воҳид зиёд намудани операнд. Ду тарзи истифодаи ин амал мавҷуд аст: префиксӣ ва суффиксӣ. Амали префиксӣ аввал операндро ба воҳид зиёд намуда, баъд онро дар ифода истифода мебарад. Амали суффиксӣ аввал қимати операндро дар ифода истифода бурда, баъд онро ба воҳид зиёд мекунад;
айнан ба монанди ++, вале қимати операндро ба воҳид кам мекунад;
sizeofамали ҳисобкунии ҳаҷми (бо байтҳо) ҷои ишғолкардаи навъи операнд;

Амалҳои бинарӣ (аз ду операнд иборатбуда):

+амали ҷамъ. Ҷамъи ду операнд;
амали тарҳ;
*амали зарб;
/амали тақсим;
%гирифтани бақияи ҳосили тақсими операндҳо;
<< ғеҷонидани тасвири битии операнди дар тарафи чап буда ба тарафи чап ба миқдори операнди дар тарафи рост истода;
>> ғеҷонидани тасвири битии операнди дар тарафи чап буда ба тарафи рост ба миқдори операнди дар тарафи рост истода;
&амали конъюнксияи разрядии тасвири битии операндҳо;
|амали дизъюнксияи разрядии тасвири битии операндҳо;
^амали истиснои дизъюнксияи разрядии тасвири битии операндҳо;
амали муносибатии хурд аз;
амали муносибатии калон аз;
<=амали муносибатии хурд ё баробар;
>=амали муносибатии калон ё баробар;
==амали муносибатии баробар;
!=амали муносибатии нобаробар;
&&амали мантиқии конъюнксия;
||амали мантиқии дизъюнксия;
=амали бахшишидани қимати ифода-операнди дар тарафи рост буда ба операнди дар тарафи чап истода;
*=ба операнди дар тарафи чап истода бахшидани ҳосили зарби операндҳо;
/=ба операнди дар тарафи чап истода бахшидани ҳосили тақсими операнди чап ба рост;
+=ба операнди дар тарафи чап истода бахшидани ҳосили ҷамъи операндҳо;
-=ба операнди дар тарафи чап истода бахшидани ҳосили тарҳи операндҳо;
%=ба операнди дар тарафи чап истода бахшидани бақияи ҳосили тақсими операнди чап ба рост;
,вергул ҳамчун амал ҳисобкунии якчанд ифодаи пайдарпайро гурӯҳбандӣ менамояд. Дар гурӯҳ ҳисобкунӣ аз тарафи чап ба рост иҷро карда шуда, ба қимати ифодаи росттарин баробар аст. Масалан, қимати ифодаи d=4,d*2 ба 8 баробар аст.

Амали шартӣ. Амали шартӣ – амали тернарӣ аст, яъне барои се операнд муайян шудааст. Намуди умумии ин амал чунин аст:

операнди_1 ? операнди_2 : операнди_3

Якум, қимати операнди_1 ҳисоб карда мешавад. Агар қимати он ғайринулӣ (дуруст) бошад, онгоҳ қимати ифода ба қимати операнди_2 баробар мешавад. Дар айни ҳол, агар қимати операнди_1 ба сифр (нодуруст) баробар бошад, қимати ифода ба қимати операнди_3 баробар мешавад. Масалан, қимати ифодаи x < 0 ? -x : x ба қимати мутлақи x баробар аст.

Дар охири мавзӯъ ранги (тартиби иҷрошавии) амалҳоро дида мебароем. Грамматикаи забони С++ 16 категорияи приоритет (аввалият)-и амалҳоро муайян мекунад. Дар ҷадвали поёнӣ онҳо оварда шудаанд.

РангАмалҳоАссотсиативият
1.  () [] -> :: .
2.  ! ~ + — ++ — & *sizeof new delete
3.  .* ->*
4.  * / % (амалҳои бинарӣ)
5.  + — (амалҳои бинарӣ)
6.  << >>
7.  < <= >= >
8.  == !=
9.  &
10.          ˆ
11.          |
12.          &&
13.          ||
14.          ?: (амали шартӣ)
15.          = *= /= %= += -= &= ←ˆ= |= <<= >>=
16.          , (амали вергул)

Амали ранги 1 дошта приоритети баландтаринро дорад. Амалҳои ранги якхела дошта приоритети баробар доранд, ва қоидаи ҳисобкунӣ байни ин амалҳо аз рӯи ассотсиативият (ё аз чап ба рост →, ё аз рост ба чап ←) иҷро карда мешаванд. Агар ягон амал ду маротиба дар ҷадвал омада бошад, он гоҳ, амали якум, яъне амали рангаш хурд (приоритеташ баланд) амали унарӣ, дуюмаш бошад – амали бинарӣ аст.

Маводҳои ҳамсон