c operators types
Пълно проучване на оператори в C ++ с примери:
В това Интензивна C ++ серия за обучение, научихме за различните концепции в C ++ като променливи, класове за съхранение, квалификатори на типове и т.н. в нашите по-ранни уроци. Също така разбрахме как можем да модифицираме тези променливи.
За да направим тези модификации, трябва да изпълняваме операции с тези променливи и константи и за да извършваме тези операции използваме оператори.
Операторите са символи, които действат върху променливи или други обекти, които се наричат операнди и извършват математически или логически операции, за да модифицират своите стойности и да произвеждат съответно резултати.
двойно свързан списък c ++
Какво ще научите:
Оператори в C ++
Операторите формират основната основа на всеки език за програмиране. Без оператори не можем да модифицираме или манипулираме обектите на програмните езици и по този начин не можем да дадем желаните резултати. C ++ е много богат на вградени оператори, което ще разгледаме подробно в този урок.
В C ++ повечето оператори са двоични оператори, т.е. тези оператори изискват два операнда, за да изпълнят операция. Малко оператори като оператора ++ (инкремент) са унарният оператор, което означава, че работят само с един операнд.
В C ++ има и трикратен оператор, наречен Условен оператор, който приема три операнда. Ще научим подробно за това в по-късната част на урока.
Видове оператори в C ++
Операторите в C ++ са класифицирани, както е показано по-долу:
Нека разгледаме подробно всеки тип оператор C ++ !!
Аритметични оператори
Аритметичните оператори се използват за извършване на основни математически операции върху операндите.
C ++ поддържа следните аритметични операции:
Оператор | Двоична / унарна | Описание |
---|---|---|
- | Унар | Оператор на декремент - намалява стойността на операнда с 1 |
+ | Двоична | Добавяне на два операнда |
- | Двоична | Изваждане на два операнда |
* | Двоична | Умножение на два операнда |
/ | Двоична | Деление на два операнда |
% | Двоична | Модулен оператор - резултатът е остатъкът от делението |
++ | Унар | Инкрементен оператор - увеличава стойността на операнда с 1 |
Примерът по-долу демонстрира първите пет аритметични оператора в C ++
#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 = '<Логически оператори Логическите оператори се използват за оценка на комбинация от условия / ограничения, за да се получи резултатна стойност. Резултатът от оценката на булев израз е Boolean, който е или true, или false.
C ++ поддържа следните логически оператори:
Оператор Описание 7 L-> R <<
>> Побитово отместване наляво
Побитово отместване надясно && Логично И: връща true, ако и двете условия са истина, в противен случай връща false. || Логично ИЛИ: връща true, ако едно от условията е true. Връща false, когато и двете условия са false. ! Логично НЕ: отрича състоянието.
C ++ използва метод на късо съединение за оценка на логически изрази. В това C ++ трябва да оцени само първия израз / операнд на логическия израз, за да предостави резултата. Например, за логически оператор AND (&&) C ++ оценява само първия израз. Ако е невярно, резултатът ще бъде невярен, дори ако второто условие е вярно.
По същия начин, за логическо ИЛИ (||), той оценява само първия израз. Ако първият израз е истина, тогава резултатът ще бъде истина, така че не е необходимо да се оценява вторият израз.
По-долу е даден пример, който показва използването на логически оператори.
#include #include using namespace std; int main() int a=10, b=8,c=12,d=14; if(!(a==0)) cout<<'a is not zero'< Изход:
a не е нула
Логично И е вярно
Логично ИЛИ е вярно
В горната програма използвахме и трите логически оператора, за да оценим изразите и да отпечатаме резултатите.
Релационни оператори
За сравнение на два операнда се използват релационни или оператори за сравнение. Резултатът от оценката е или верен, или фалшив.
C ++ поддържа следните релационни оператори:
Оператор Описание ! ГРЕШКА! неочакван оператор '=' Оценява дали два операнда са равни. Връща true, ако равно иначе връща false. ! = (не е равно на) Допълва оператор „равно на“. Връща true, ако операндите не са равни. В противен случай невярно. <(less than) Връща true, ако първият операнд е по-малък от втория. В противен случай невярно. <=(less than equal to) Връща true, ако първият операнд е по-малък или равен на втория операнд. В противен случай невярно. > (по-голямо от) Връща true, ако първият операнд е по-голям от втория. В противен случай невярно. > = (по-голямо от равно на) Връща true, ако първият операнд е по-голям от равен на втория. В противен случай невярно.
Вижте долната Примерна програма, за да разберете Релационните оператори.
#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'< Изход:
a не е равно на b
c не е равно на d
(a + b) по-малко от / равно на (c + d)
(a-b) по-голямо от / равно на (d-c)
В горната програма виждаме използването на релационни оператори и начина, по който те оценяват предоставените изрази.
Имайте предвид, че можем да предоставим не само стойности, но и променливи и изрази в условните изрази.
Побитови оператори
Побитовите оператори в C ++ работят върху битове на предоставените операнди. Побитовите оператори се прилагат само за интегрални типове като цяло число, символ и т.н., а не за типове данни като float, double и т.н.
Следват битовите оператори, поддържани от C ++:
Оператори Описание & (Двоично И) Извършва операция И върху битове на операнд 1 и операнд 2. | (Двоично ИЛИ) Извършва операция ИЛИ върху битове на операнд 1 и операнд 2. ^ (Двоичен XOR) Извършва XOR операция върху битове на операнд 1 и операнд 2. ~ (Допълнение на двоичен файл) Взема един операнд и обръща неговите битове. <<( Binary left shift operator) Премества битовете на първия операнд наляво до брой битове, определени от втория операнд. >> (Двоичен оператор на дясна смяна) Премества битовете на първия операнд надясно на няколко места, посочени от втория операнд.
Тези битови оператори работят по операнди по битов начин. Таблиците на истината за операциите AND, OR и XOR са дадени по-долу.
Разгледайте a и b като два бита, върху които трябва да се извършат операциите AND, OR и XOR.
Таблиците на истината за същото са дадени по-долу:
да се б a & b a | b a ^ b 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0
Нека вземем пример, за да разберем побитовите операции.
Нека a = 8 и b = 4
Двоичното представяне на a и b е както следва:
a = 8 1000
a = 4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
В горния пример виждаме, че побитовото И на 8 и 4 е 0. Побитовото ИЛИ на 8 и 4 е 12, а побитовото XOR на 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
В горната програма демонстрирахме използването на битови оператори и също отпечатахме изхода на всяка от операциите.
Оператори за присвояване
Операторът за присвояване “=” се използва за присвояване на стойност на променлива. LHS на оператора за присвояване е променлива и RHS е стойността, която трябва да бъде присвоена на променливата. Стойността от дясната страна трябва да бъде от същия тип като тази на променливата от лявата страна.
Обърнете внимание на разликата между операторите ‘=’ и ‘==’. Първият е операторът за присвояване, а вторият е операторът за равенство.
Операцията за присвояване се извършва отдясно наляво. Освен оператора за присвояване ‘=’, има и други варианти на оператора за присвояване, които са известни като ‘сложни оператори за присвояване’. Тези оператори извършват операция в допълнение към заданието.
Таблицата по-долу ни дава описание на тези оператори за присвояване.
Оператор Описание = Присвоява стойността на операнда RHS на операнда LHS + = Добавя RHS операнд към LHS операнд и присвоява резултата в LHS операнд. - = Изважда RHS операнда до LHS операнд и присвоява резултата на LHS операнд * = умножава RHS операнда до LHS операнда и присвоява резултата на LHS операнда / = разделя RHS операнда на LHS операнд и присвоява резултата на LHS операнд
Както е показано в горната таблица, ако x и y са операнди, x + = y е еквивалентно на x = x + y.
инструменти за тестване на производителността за Java приложения
По същия начин,
x - = y е еквивалентно на x = x-y.
x * = y е еквивалентно на x = x * y.
x / = y е еквивалентно на x = x / y.
Примерът по-долу за програмиране демонстрира тези оператори на присвояване.
#include #include using namespace std; int main() { int x,y; cout<>y; x = y; cout<<'
Value of x = '< Изход:
Въведете променлива y: 4
Стойност на x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1

В горния пример демонстрирахме присвояване, както и сложни оператори за присвояване.
Забележка: Можем да комбинираме и другите двоични оператори като%,<>, &, |, ^ и др. в съставни оператори за присвояване в допълнение към вече демонстрираните.
Други оператори
Досега проучихме всички основни оператори в C ++. Има още някои допълнителни оператори на C ++, които се нуждаят от нашето внимание.
Тези оператори включват:
(i) размер на оператора
sizeof е унарен оператор, който се използва широко в C и C ++. Sizeof връща размера на своя операнд. Връщаната стойност обикновено е неподписан интегрален тип, обозначен с ‘size_t’.
Операторът Sizeof има много приложения в езиците C и C ++. Той може да се използва за откриване на размера на променливите, масивите или изразите и дори за разпределяне на блоковете памет.
(ii) Условен тернарен оператор
Условният оператор в C ++ може да се използва като заместител на оператора if-else.
Общият синтаксис за условния оператор е:
Състояние? израз1: израз2;
Ако условието е вярно, израз 1 ще бъде оценен. Ако условието е невярно, тогава се оценява израз2.
Моля, обърнете внимание, че израз1 и израз2 трябва да бъдат от един и същи тип данни, за да се избегнат потенциални грешки.
Предложено четене => Троичен оператор в C #
(iii) Оператор на запетая
Операторът със запетая, който е представен като знак „,“, може да се използва и като оператор, и като разделител.
Като оператор се използва запетая, когато има повече от един израз, който трябва да бъде оценен. Само най-десният израз е присвоен на LHS.
Например,помислете за следния израз.
x = (y = 4, y + 1);
В този израз имаме два израза от дясната страна, разделени със запетая. Тук запетая действа като оператор. Първо ще бъде оценен изразът y = 4. Тогава следващият израз y + 1 ще бъде оценен чрез използване на резултата от първия израз, т.е. y = 4. По този начин стойността на y + 1 ще бъде 5 и тази стойност ще бъде присвоена на x.
Като разделител запетая може да се използва навсякъде, за да отдели дефиниции, списък с параметри и т.н.
(iv) Оператор за достъп до членове
Има два оператора, които се използват за достъп до отделните членове на класове, структури или обединения в C ++. Това са операторът на точки (.) И стрелката (->). Ще научим тези оператори в детайли, когато научим обектно-ориентирано програмиране в C ++.
Примерът по-долу демонстрира използването на sizeof, запетая и условен оператор.
#include #include using namespace std; int main() { int x,y; x = (y=3,y+4); cout<<'Value of x = '< Изход:
Стойност на x = 7
Променлива x е по-голяма от 5
размер на (x): 4 размер на (y): 4
Снимката на екрана за същото е дадена по-долу.

Както е показано в горната програма, първо имаме две променливи, декларирани и разделени със запетая. (запетая като разделител). След това имаме оператор със запетая с два израза. Както можем да видим от изхода, стойността на най-десния израз се присвоява на променлива x. След това демонстрираме условния оператор, за да оценим дали x е по-малко от 5.
И накрая, ние демонстрираме използването на оператора sizeof. Тук използваме оператора sizeof, за да получим размера на променливите x и y. Тъй като и двете са целочислени променливи, върнатият размер е 4 байта.
(v) Предимство и асоциативност на оператора
Вече видяхме почти всички оператори C ++ и знаем, че те могат да се използват в изрази за извършване на конкретни операции. Но изразите, които сме виждали в примери, са прости и ясни. Въпреки това, в зависимост от нашите изисквания, изразите са склонни да стават все по-сложни.
Такива сложни изрази ще имат повече от един оператор и много операнди. В такава ситуация трябва да оценим кой оператор трябва да бъде оценен първо.
Например, помислете за следния израз.
x = 4 + 5/3;
Тук имаме оператори + и / и трябва да решим кой израз ще бъде оценен първо. В математически план знаем, че разделянето ще се извърши преди събирането. Така изразът ще стане x = 4 + (5/3) = 5.
Но когато компилаторът се сблъска с такава ситуация, ние също трябва да имаме подобен механизъм, за да решим реда на операциите, така че той да може правилно да оцени израза.
Този ред, в който се оценяват операторите в съставен израз, се нарича „Прецедентност“ на оператора. C ++ е определил приоритет за всички оператори и операторите с по-висок приоритет се оценяват първо.
Какво се случва, когато имаме два оператора един до друг в израз с еднакъв приоритет? Тук в картината влиза асоциативността на оператора.
Асоциативността казва на компилатора дали да оцени израз в последователност отляво надясно или последователност отдясно наляво. По този начин, използвайки приоритет и асоциативност на оператор, можем ефективно да оценим израз и да получим желания резултат.
C ++ предоставя таблица, състояща се от предимство и асоциативност на различни оператори, които използва.
Тази таблица е дадена по-долу.
Предимство / Асоциативност Оператор Описание 1 Няма ::
:: Оператор за разделителна способност на обхвата
(единствен)
(двоично) 2 L-> R ()
()
()
{}
Тип()
Тип{}
()
.
->
++
––
типизиран
const_cast
динамичен_каст
reinterpret_cast
static_cast Скоби
Извикване на функция
Инициализация
Единна инициализация (C ++ 11)
Функционален актьорски състав
Функционален глас (C ++ 11)
Индекс на масива
Членски достъп от обекта
Членски достъп от ptr на обект
След-увеличение
След намаляване
Информация за типа изпълнение
Отхвърли const
Изпълнение, проверено от типа гласове
Предаване на един тип на друг Проверен тип на компилирано време 3 R-> L +
-
++
––
!
~
(Тип)
размер на
&
*
ново
нов ()
Изтрий
Изтрий() Унар повече
Унарни минус
Предварително увеличение
Предварително намаляване
Логично НЕ
Побитово НЕ
Актьорски състав в С стил
Размер в байтове
Адрес на
Dereference
Динамично разпределение на паметта
Динамично разпределение на масив
Динамично изтриване на паметта
Динамично изтриване на масив 4 L-> R -> *
. * Избор на указател за член
Избор на обект член 5 L-> R *
/
% Умножение
Дивизия
Модул 6 L-> R +
- Събиране
Изваждане 8 L-> R <
<=
>
> = Сравнение по-малко от
Сравнение по-малко или равно
Сравнение по-голямо от
Сравнение, по-голямо или равно на 9 L-> R ! ГРЕШКА! нелегален знак '!' Равенство
Неравенство 10 L-> R & Побитово И 11 L-> R ^ Побитово XOR 12 L-> R | Побитово ИЛИ 13 L-> R && Логично И 14 L-> R || Логично ИЛИ 15 R-> L ?:
=
* =
/ =
% =
+ =
- =
<<=
>> =
& =
| =
^ = Условно (виж бележката по-долу)
Възлагане
Присвояване на умножение
Разпределение на дивизията
Присвояване на модул
Присвояване на добавяне
Присвояване на изваждане
Побитово преместване наляво
Побитово преместване надясно
Побитово И задание
Побитово ИЛИ задание
Побитово присвояване на XOR 16 R-> L хвърляне Хвърли израз 17 L-> R , Оператор със запетая
Бележки:
- Ниво на предимство 1 е най-високото ниво на предимство, а ниво 17 е най-ниското. Операторите с по-високо ниво на приоритет се оценяват първо.
- L-> R означава асоциативност отляво надясно.
- R-> L означава асоциативност отдясно наляво.
Заключение
Това е всичко за операторите в C ++.
Обсъдихме почти всички оператори. Някои конкретни оператори, които присъстват в горната таблица на приоритетите, които не сме обсъждали, ще бъдат обсъдени според темите, които обхващаме в нашите предстоящи уроци.
=> Вижте тук, за да разгледате пълния списък с уроци за C ++
Препоръчително четене
- Примери за аритметични и булеви оператори на скрипт на Unix Shell
- Оператори на Python
- Нови / Изтриване на оператори в C ++ с примери
- Типове данни на Python
- Условни изявления на Unix: ако тогава други и релационни оператори
- Урок за Python DateTime с примери
- Урок за инжектиране на HTML: Видове и превенция с примери
- Изрежете командата в Unix с примери