c operators types
Комплетна студија оператора на језику Ц ++ са примерима:
У ово Интензивна Ц ++ серија обуке, научили смо о разним концептима у Ц ++-у попут променљивих, класа складишта, квалификатора типова итд. у нашим ранијим водичима. Такође смо сазнали како можемо променити ове променљиве.
Да бисмо извршили ове модификације, морамо извршити операције над овим променљивим и константама и да бисмо извршили ове операције користимо се операторима.
Оператори су симболи који делују на променљиве или друге ентитете који се називају операнди и изводе математичке или логичке операције да би модификовали своје вредности и у складу с тим произвели резултате.
Шта ћете научити:
Оператори у Ц ++
Оператери чине основну основу било ког програмског језика. Без оператора не можемо модификовати или манипулисати ентитетима програмских језика и тиме не можемо произвести жељене резултате. Ц ++ је врло богат уграђеним операторима о чему ћемо детаљно разговарати у овом упутству.
У Ц ++-у већина оператора су бинарни оператори, тј. Овим оператерима су потребна два операнда да би извршили операцију. Неколико оператора попут оператора ++ (инкремент) је унарни оператор, што значи да раде само на једном операнду.
У Ц ++-у постоји и тернарни оператор под називом Условни оператор који узима три операнда. О томе ћемо детаљно сазнати у каснијем делу упутства.
Типови оператора у језику Ц ++
Оператори на Ц ++ класификовани су као што је приказано доле:
Истражимо детаљно сваку врсту Ц ++ оператора !!
Аритметички оператори
Аритметички оператори се користе за извођење основних математичких операција над операндима.
Ц ++ подржава следеће аритметичке операције:
Оператор | Бинарно / унарно | Опис |
---|---|---|
- | Унари | Оператор смањења - смањује вредност операнда за 1 |
+ | Бинарно | Сабирање два операнда |
- | Бинарно | Одузимање два операнда |
* | Бинарно | Множење два операнда |
/ | Бинарно | Подела два операнда |
% | Бинарно | Оператор модула - резултат је остатак дељења |
++ | Унари | Оператор повећања - повећава вредност операнда за 1 |
Следећи пример приказује првих пет аритметичких оператора у језику Ц ++
#include #include using namespace std; int main() { int op1=3,op2=4; float op3=10.1,op4=5.4; cout<<'Operands are op1 = '< Ово можемо боље разумети користећи следећи Пример. #include #include using namespace std; int main() { int x=4,y; y = ++x; cout<<'PreIncrement:Value of x = '<Логички оператори Логички оператори се користе за процену комбинације услова / ограничења да би се добила резултујућа вредност. Резултат процене логичког израза је логичка вредност која је тачна или нетачна.
Ц ++ подржава следеће логичке операторе:
Оператор Опис 7 Л-> Р. <<
>> Битни помак улево
Битни помак удесно && Логично И: враћа труе ако су оба услова истинита, иначе враћа фалсе. || Логично ИЛИ: враћа труе ако је један од услова тачан. Враћа нетачно када су оба услова нетачна. ! Логично НИЈЕ: негира стање.
Ц ++ користи метод кратког споја за процену логичких израза. У овоме, Ц ++ мора да процени само први израз / операнд логичког израза да би пружио резултат. На пример, за логички оператор АНД (&&), Ц ++ процењује само први израз. Ако је нетачно, резултат ће бити нетачан чак и ако је други услов тачан.
Слично томе, за логички ОР (||), он процењује само први израз. Ако је први израз тачан, тада ће резултат бити истинит, тако да не треба процењивати други израз.
Доље је дат пример који показује употребу логичких оператора.
#include #include using namespace std; int main() int a=10, b=8,c=12,d=14; if(!(a==0)) cout<<'a is not zero'< Излаз:
а није нула
Логично И је тачно
Логично ИЛИ је тачно
У горе наведеном програму користили смо сва три логичка оператора да бисмо проценили изразе и исписали резултате.
Релациони оператори
Релациони оператери или оператори упоређивања користе се за упоређивање два операнда. Резултат евалуације је или тачан или нетачан.
Ц ++ подржава следеће релационе операторе:
Оператор Опис ! ГРЕШКА! неочекивани оператор '=' Процењује да ли су два операнда једнака. Враћа тачно ако је једнако иначе враћа лажно. ! = (није једнако са) Допуњује оператор „једнако“. Враћа тачно ако операнди нису једнаки. Иначе лажно. <(less than) Враћа тачно ако је први операнд мањи од другог. Иначе лажно. <=(less than equal to) Враћа тачно ако је први операнд мањи или једнак другом операнду. Иначе лажно. > (веће од) Враћа тачно ако је први операнд већи од другог. Иначе лажно. > = (веће од једнако) Враћа тачно ако је први операнд већи од једнаког другом. Иначе лажно.
Погледајте доњи Пример програма за разумевање релационих оператора.
#include #include using namespace std; int main() { int a=10, b=8,c=12,d=14; if(a==b) cout<<'a is equal to b'< Излаз:
а није једнако б
ц није једнако д
(а + б) мање / једнако (ц + д)
(а-б) веће од / једнако (д-ц)
У горњем програму видимо употребу релационих оператора и начин на који они процењују дане изразе.
где могу бесплатно гледати аниме
Имајте на уму да у условним изразима можемо пружити не само вредности већ и променљиве и изразе.
Бит-ови оператори
Битни оператори у Ц ++ оперишу на битовима предвиђених операнда. Битни оператори се примењују само на интегралне типове попут целог броја, карактера итд., А не и на типове података попут флоат, доубле итд.
Следе битни оператори које подржава Ц ++:
Оператори Опис & (Бинарни И) Изводи И операцију на битовима операнда 1 и операнда 2. | (Бинарно ИЛИ) Изводи ИЛИ операцију на битовима операнда 1 и операнда 2. ^ (Бинарни КСОР) Изводи КСОР операцију на битовима операнда 1 и операнда 2. ~ (Бинарни додатак) Узима један операнд и обрће његове битове. <<( Binary left shift operator) Помера битове првог операнда улево у број битова назначених другим операндом. >> (Бинарни оператор десне смене) Помера битове првог операнда удесно на број места назначених другим операндом.
Ови битни оператори делују на операнде на бит-би-бит начин. Табеле истине за операције АНД, ОР и КСОР дате су у наставку.
Сматрајте а и б као два бита на којима треба извршити операције АНД, ОР и КСОР.
Табеле истине за исте су дате у наставку:
до б а & б а | б а ^ б 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0
Узмимо пример за разумевање битних операција.
Нека је а = 8 и б = 4
Бинарни приказ а и б је следећи:
а = 8 1000
а = 4 0100
а & б 0000 = 0
а | б 1100 = 12
а ^ б 1100 = 12
У горњем примеру видимо да је битни АНД од 8 и 4 једнак 0. Битни ОР од 8 и 4 је 12, а битни КСОР од 8 и 4 је такође 12.
То је начин на који битске операције изводе битне операције.
Пример демонстрације битних оператора.
#include #include using namespace std; int main() int a=8,b=4,c; c = a&b; cout<<'Result of & : '< Излаз:
Резултат &: 0
Резултат од | : 12
Резултат од ^: 12
Резултат<< by 2 bits: 32
Резултат >> са 2 бита: 1
Резултат ~: -4
У горе наведеном програму показали смо употребу битних оператора и такође одштампали излаз сваке од операција.
Оператори доделе
Оператор доделе „=“ се користи за додељивање вредности променљивој. ЛХС оператора доделе је променљива, а РХС је вредност која се додељује променљивој. Вредност на десној страни мора бити истог типа као вредност променљиве на левој страни.
Обратите пажњу на разлику између оператора „=“ и „==“. Први је оператор додељивања, а други је оператор једнакости.
Операција додељивања одвија се здесна налево. Поред оператора доделе ‘=’, постоје и друге варијације оператора доделе које су познате као ‘сложени оператори доделе’. Ови оператери извршавају операцију поред додељивања.
Табела у наставку даје опис ових оператора доделе.
Оператор Опис = Додељује вредност РХС операнда ЛХС операнду + = Додаје РХС операнд ЛХС операнду и додељује резултат у ЛХС операнду. - = Одузима РХС операнд ЛХС операнду и додељује резултат ЛХС операнду * = множи РХС операнд на ЛХС операнд и додељује резултат ЛХС операнду / = дели РХС операнд на ЛХС операнд и додељује резултат ЛХС операнду
Као што је приказано у горњој табели, ако су к и и операнди, к + = и је еквивалентно к = к + и.
Слично томе,
к - = и је еквивалентно к = к-и.
к * = и је еквивалентно к = к * и.
к / = и је еквивалентно к = к / и.
Следећи пример програмирања приказује ове операторе додељивања.
#include #include using namespace std; int main() { int x,y; cout<>y; x = y; cout<<'
Value of x = '< Излаз:
Унесите улазну променљиву и: 4
Вредност к = 4
а + = б: 8
ц - = б: 3
а * = б: 40
б / = ц: 1
У горњем примеру показали смо операторе доделе, као и сложене операторе доделе.
Белешка: Такође можемо комбиновати друге бинарне операторе попут%,<>, &, |, ^ итд. у сложене изјаве о додели поред оних које су већ демонстриране.
Остали оператери
До сада смо истражили све главне операторе у Ц ++. Постоји још неколико додатних Ц ++ оператора којима је потребна наша пажња.
Ови оператори укључују:
(и) величина оператора
сизеоф је унарни оператор који се широко користи у Ц и Ц ++. Сизеоф враћа величину свог операнда. Повратна вредност је обично непотписани интегрални тип означен са „сизе_т“.
Оператор Сизеоф има много употреба у језицима Ц и Ц ++. Може се користити за откривање величине променљивих, низова или израза, па чак и за доделу блокова меморије.
(ии) Условни тернарни оператер
Условни оператор у Ц ++-у може се користити као замена за иф-елсе израз.
Општа синтакса за условни оператор је:
Стање? израз1: израз2;
Ако је услов тачан, израчунава се израз 1. Ако је услов нетачан, тада ће се израчунати израз2.
Имајте на уму да израз1 и израз2 морају бити истог типа података како би се избегле потенцијалне грешке.
Предложено читање => Тернарни оператор у Ц #
(иии) Запетац
Оператор зарезе који је представљен као знак „,“ може се користити као оператор, као и као сепаратор.
Као оператор, зарез се користи када постоји више израза за процену. Само крајњи десни израз додељен је ЛХС.
На пример,размотрите следећи израз.
к = (и = 4, и + 1);
У овом изразу имамо два израза на десној страни одвојена зарезом. Овде запета делује као оператор. Прво ће се израчунати израз и = 4. Тада ће се следећи израз и + 1 проценити коришћењем резултата првог израза, тј. И = 4. Тако ће вредност и + 1 бити 5 и ова вредност ће бити додељена к.
Као сепаратор, зарез се може користити било где за одвајање дефиниција, листе параметара итд.
(ив) Оператор за приступ члановима
Постоје два оператора која се користе за приступ појединачним члановима класа, структура или синдиката у Ц ++. То су оператор тачака (.) И стрелица (->). Ове операторе ћемо детаљно научити када научимо објектно оријентисано програмирање на језику Ц ++.
Следећи пример приказује употребу величине, зареза и условног оператора.
#include #include using namespace std; int main() { int x,y; x = (y=3,y+4); cout<<'Value of x = '< Излаз:
Вредност к = 7
Променљива к је већа од 5
величина (к): 4 величина (и): 4
Снимак екрана за исти дат је у наставку.
Као што је приказано у горњем програму, прво имамо две променљиве декларисане и одвојене зарезом. (зарез као сепаратор). Даље имамо оператор зареза са два израза. Као што видимо из резултата, вредност десног израза додељује се променљивој к. Даље, демонстрирамо условни оператор да процени да ли је к мање од 5.
На крају, демонстрирамо употребу величине оператора. Овде користимо оператор сизеоф да бисмо добили величину променљивих к и и. Како су обе целобројне променљиве, враћена величина је 4 бајта.
(в) Предност оператора и асоцијативност
Већ смо видели готово све операторе Ц ++ и знамо да се они могу користити у изразима за извршавање одређених операција. Али изрази које смо видели у примерима су једноставни и јасни. Међутим, у зависности од наших захтева, изрази постају све сложенији.
класификација грешака у тестирању софтвера
Такви сложени изрази имаће више оператора и много операнда. У таквој ситуацији треба да проценимо који оператер се прво оцењује.
На пример, размотрите следећи израз.
к = 4 + 5/3;
Овде имамо + и / операторе и морамо да одлучимо који израз ће се прво проценити. У математичком смислу знамо да ће се дељење извршити пре сабирања. Тако ће израз постати к = 4 + (5/3) = 5.
Али када се компајлер суочи са таквом ситуацијом, такође морамо имати сличан механизам за одлучивање о редоследу операција, како би могао правилно проценити израз.
Овај редослед којим се оцењују оператори у сложеном изразу назива се „предност“ оператора. Ц ++ је дефинисао приоритет за све операторе и прво се процењују оператори са већим приоритетом.
Шта се дешава када имамо два оператора један поред другог у изразу са истим приоритетом? Овде асоцијативност оператора долази на слику.
Асоцијативност говори компајлеру да ли да процени израз у секвенци слева удесно или секвенци здесна улево. Тако користећи предност и асоцијативност оператора можемо ефикасно проценити израз и добити жељени резултат.
Ц ++ пружа табелу која се састоји од првенства и асоцијативности различитих оператора које користи.
Ова табела је дата у наставку.
Предност / Асоцијативност Оператор Опис 1 Ниједан ::
:: Оператор резолуције опсега
(унарно)
(бинарно) 2 Л-> Р. ()
()
()
{}
тип()
тип{}
[]
.
->
++
––
типеид
цонст_цаст
динамиц_цаст
реинтерпрет_цаст
статиц_цаст Заграде
Позив функције
Иницијализација
Једнообразна иницијализација (Ц ++ 11)
Функционална глумачка постава
Функционални лив (Ц ++ 11)
Подписник низа
Приступ члана из објекта
Приступ члана из објекта птр
Пост-инкремент
Пост-декремент
Информације о типу времена извођења
Одбаци цонст
Глумци који су проверени током извођења
Пребаците један тип на другиСастав проверен у времену компајлирања 3 Р-> Л. +
-
++
––
!
~
(тип)
величина
&
*
Нова
Нова[]
избрисати
избриши [] Унари више
Унарни минус
Пре-инкремент
Предекремент
Логично НЕ
Битно НЕ
Глумачка екипа у Ц стилу
Величина у бајтовима
Адреса
Дереференце
Динамичко додељивање меморије
Динамичко додељивање низа
Динамичко брисање меморије
Брисање динамичког низа 4 Л-> Р. -> *
. * Бирач показивача члана
Бирач члана члана 5 Л-> Р. *
/
% Множење
Дивизија
Модул 6 Л-> Р. +
- Сабирање
Одузимање 8 Л-> Р. <
<=
>
> = Поређење мање од
Поређење мање или једнако
Поређење веће од
Поређење веће или једнако 9 Л-> Р. ! ГРЕШКА! илегални знак '!' Једнакост
Неједнакост 10 Л-> Р. & У битовима И. 11 Л-> Р. ^ Битно КСОР 12 Л-> Р. |. | У битовима ИЛИ 13 Л-> Р. && Логично И 14 Л-> Р. || Логично ИЛИ 15 Р-> Л. ?:
=
* =
/ =
% =
+ =
- =
<<=
>> =
& =
| =
^ = Условно (види напомену испод)
Додељивање
Задатак множења
Задатак дивизије
Задатак модула
Задатак сабирања
Задатак одузимања
Битни помак левог задатка
Битни помак удесно
Битно И додељивање
Битно ИЛИ додељивање
Битно додељивање КСОР-а 16 Р-> Л. бацити Баци израз 17 Л-> Р. , Запетац
Напомене:
- Ниво првенства 1 је највиши ниво приоритета, а ниво 17 најнижи ниво. Прво се оцењују оператори са вишим нивоом првенства.
- Л-> Р значи асоцијативност слева надесно.
- Р-> Л значи асоцијативност здесна налево.
Закључак
Ово је све о операторима у Ц ++.
Разговарали смо о готово свим оператерима. О неким одређеним операторима који су присутни у горњој табели приоритета, а о којима нисмо разговарали, разговараће се у складу са темама које обрађујемо у нашим предстојећим водичима.
=> Погледајте овде како бисте истражили целу листу водича за Ц ++
Препоручено читање
- Примери аритметичких и логичких оператора скрипте љуске Уник
- Питхон Оператори
- Нови / Обриши операторе на Ц ++ са примерима
- Питхон типови података
- Условне изјаве Уник-а: ако је то друго и релативни оператори
- Питхон ДатеТиме Водич са примерима
- Водич за ХТМЛ ињекције: типови и превенција са примерима
- Изрежи команду у Унику са примерима