c operators types
Kompletne badanie operatorów w C ++ z przykładami:
W tym Seria intensywnych szkoleń C ++, Dowiedzieliśmy się o różnych koncepcjach w C ++, takich jak zmienne, klasy pamięci, kwalifikatory typów itp. z naszych wcześniejszych samouczków. Dowiedzieliśmy się również, jak możemy modyfikować te zmienne.
Aby dokonać tych modyfikacji, musimy wykonać operacje na tych zmiennych i stałych, a do wykonania tych operacji używamy operatorów.
Operatory to symbole, które oddziałują na zmienne lub inne jednostki zwane operandami i wykonują operacje matematyczne lub logiczne w celu zmodyfikowania ich wartości i uzyskania odpowiednich wyników.
Czego się nauczysz:
Operatory w C ++
Operatory stanowią podstawę każdego języka programowania. Bez operatorów nie możemy modyfikować ani manipulować jednostkami języków programowania, a tym samym nie możemy uzyskać pożądanych wyników. C ++ jest bardzo bogaty we wbudowane operatory, które omówimy szczegółowo w tym samouczku.
W C ++ większość operatorów to operatory binarne, tj. Operatory te wymagają dwóch operandów do wykonania operacji. Niewiele operatorów, takich jak operator ++ (inkrementacja), jest operatorem jednoargumentowym, co oznacza, że działają tylko na jednym operandzie.
Istnieje również operator trójskładnikowy w C ++ zwany operatorem warunkowym, który przyjmuje trzy operandy. Dowiemy się o tym szczegółowo w dalszej części samouczka.
Rodzaje operatorów w C ++
Operatory w C ++ są sklasyfikowane jak pokazano poniżej:
Przyjrzyjmy się szczegółowo każdemu typowi operatorów C ++ !!
Operatory arytmetyczne
Operatory arytmetyczne służą do wykonywania podstawowych operacji matematycznych na operandach.
C ++ obsługuje następujące operacje arytmetyczne:
Operator | Binarny / jednoargumentowy | Opis |
---|---|---|
- | Jednoargumentowe | Operator zmniejszania - zmniejsza wartość operandu o 1 |
+ | Dwójkowy | Dodanie dwóch operandów |
- | Dwójkowy | Odejmowanie dwóch operandów |
* | Dwójkowy | Mnożenie dwóch operandów |
/ | Dwójkowy | Podział dwóch operandów |
% | Dwójkowy | Operator modułu - wynik jest pozostałą częścią dzielenia |
++ | Jednoargumentowe | Operator inkrementacji - zwiększa wartość operandu o 1 |
Poniższy przykład ilustruje pierwsze pięć operatorów arytmetycznych w C ++
#include #include using namespace std; int main() { int op1=3,op2=4; float op3=10.1,op4=5.4; cout<<'Operands are op1 = '< Możemy to lepiej zrozumieć, korzystając z następującego przykładu. #include #include using namespace std; int main() { int x=4,y; y = ++x; cout<<'PreIncrement:Value of x = '<Operatory logiczne Operatory logiczne służą do oceny kombinacji warunków / ograniczeń w celu uzyskania wynikowej wartości. Wynikiem oceny wyrażenia boolowskiego jest wartość logiczna, która ma wartość prawda lub fałsz.
C ++ obsługuje następujące operatory logiczne:
Operator Opis 7 L-> R <<
>> Przesunięcie bitowe w lewo
Przesunięcie bitowe w prawo && Logiczne AND: zwraca true, jeśli oba warunki są prawdziwe, w przeciwnym razie zwraca false. || Logiczne LUB: zwraca prawdę, jeśli jeden z warunków jest spełniony. Zwraca fałsz, gdy oba warunki są fałszywe. ! Logiczne NIE: neguje warunek.
C ++ wykorzystuje metodę zwarcia do oceny wyrażeń logicznych. W tym przypadku C ++ musi oszacować tylko pierwsze wyrażenie / operand wyrażenia logicznego, aby dostarczyć wynik. Na przykład, dla operatora logicznego AND (&&), C ++ ocenia tylko pierwsze wyrażenie. Jeśli jest fałszywy, wynik będzie fałszywy, nawet jeśli drugi warunek jest prawdziwy.
Podobnie w przypadku logicznego OR (||) oblicza tylko pierwsze wyrażenie. Jeśli pierwsze wyrażenie jest prawdziwe, wynik będzie prawdziwy, więc nie musi oceniać drugiego wyrażenia.
Poniżej podano przykład, który pokazuje użycie operatorów logicznych.
#include #include using namespace std; int main() int a=10, b=8,c=12,d=14; if(!(a==0)) cout<<'a is not zero'< Wynik:
a nie jest zerem
Logiczne AND jest prawdziwe
Logiczne LUB jest prawdziwe
W powyższym programie wykorzystaliśmy wszystkie trzy operatory logiczne w celu oceny wyrażeń i wydrukowania wyników.
Operatorzy relacyjni
Do porównania dwóch operandów używane są operatory relacyjne lub porównania. Wynik oceny jest prawdziwy lub fałszywy.
C ++ obsługuje następujące operatory relacyjne:
Operator Opis !BŁĄD! nieoczekiwany operator „=” Sprawdza, czy dwa operandy są równe. Zwraca prawdę, jeśli równa się w przeciwnym razie zwraca fałsz. ! = (różne od) Uzupełnia operator „równa się”. Zwraca prawdę, jeśli operandy nie są równe. W przeciwnym razie fałsz. <(less than) Zwraca wartość true, jeśli pierwszy operand jest krótszy niż drugi. W przeciwnym razie fałsz. <=(less than equal to) Zwraca prawdę, jeśli pierwszy operand jest mniejszy lub równy drugiemu operandowi. W przeciwnym razie fałsz. > (większe niż) Zwraca wartość true, jeśli pierwszy operand jest większy niż drugi. W przeciwnym razie fałsz. > = (większe niż równe) Zwraca wartość true, jeśli pierwszy operand jest większy niż drugi. W przeciwnym razie fałsz.
Zobacz poniższy przykładowy program, aby zrozumieć operatory relacyjne.
#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'< Wynik:
a nie jest równe b
c nie jest równe d
(a + b) mniejszy niż / równy (c + d)
(a-b) większe niż / równe (d-c)
W powyższym programie widzimy użycie operatorów relacyjnych i sposób, w jaki oceniają one podane wyrażenia.
Zwróć uwagę, że w instrukcjach warunkowych możemy podać nie tylko wartości, ale także zmienne i wyrażenia.
Operatory bitowe
Operatory bitowe w C ++ operują na bitach podanych operandów. Operatory bitowe są stosowane tylko do typów całkowitych, takich jak liczba całkowita, znak itp., A nie do typów danych, takich jak float, double itp.
Poniżej znajdują się operatory bitowe obsługiwane przez C ++:
Operatorzy Opis & (Binarne AND) Wykonuje operację AND na bitach operandu 1 i operandu 2. | (Binarne LUB) Wykonuje operację OR na bitach operandu 1 i operandu 2. ^ (Binarny XOR) Wykonuje operację XOR na bitach operandu 1 i operandu 2. ~ (Dopełnienie binarne) Pobiera jeden operand i odwraca jego bity. <<( Binary left shift operator) Przesuwa bity pierwszego operandu w lewo do liczby bitów określonej przez drugi argument. >> (binarny operator przesunięcia w prawo) Przesuwa bity pierwszego operandu w prawo do liczby miejsc określonych przez drugi operand.
Te operatory bitowe działają na operandach w sposób bit po bicie. Tabele prawdy dla operacji AND, OR i XOR podano poniżej.
Rozważmy a i b jako dwa bity, na których mają być wykonywane operacje AND, OR i XOR.
Tabele prawdy dla tego samego są podane poniżej:
do b a & b a | b a ^ b 0 0 0 0 0 jeden 0 0 jeden jeden 0 jeden 0 jeden jeden jeden jeden jeden jeden 0
Weźmy przykład, aby zrozumieć operacje bitowe.
Niech a = 8 i b = 4
Binarna reprezentacja a i b jest następująca:
a = 8 1000
a = 4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
W powyższym przykładzie widzimy, że bitowe AND z 8 i 4 to 0. Bitowe OR z 8 i 4 to 12, a bitowe XOR z 8 i 4 to również 12.
Jest to sposób, w jaki operacje bitowe są wykonywane przez operatory bitowe.
Przykład demonstrujący operatory bitowe.
#include #include using namespace std; int main() int a=8,b=4,c; c = a&b; cout<<'Result of & : '< Wynik:
Wynik &: 0
Wynik | : 12
Wynik ^: 12
Wynik<< by 2 bits: 32
Wynik >> o 2 bity: 1
Wynik ~: -4
W powyższym programie zademonstrowaliśmy użycie operatorów bitowych, a także wydrukowaliśmy wynik każdej operacji.
Operatory przypisania
Operator przypisania „=” służy do przypisywania wartości zmiennej. LHS operatora przypisania jest zmienną, a RHS to wartość, która ma zostać przypisana do zmiennej. Wartość po prawej stronie musi być tego samego typu, co wartość zmiennej po lewej stronie.
Zwróć uwagę na różnicę między operatorami „=” i „==”. Pierwszy to operator przypisania, a drugi to operator równości.
Operacja przypisania odbywa się od prawej do lewej. Oprócz operatora przypisania „=” istnieją inne odmiany operatora przypisania, znane jako „złożone operatory przypisania”. Te operatory oprócz przypisania wykonują również operację.
Poniższa tabela zawiera opis tych operatorów przypisania.
Operator Opis = Przypisuje wartość operandu RHS do operandu LHS + = Dodaje operand RHS do operandu LHS i przypisuje wynik w operandzie LHS. - = Odejmuje operand RHS od operandu LHS i przypisuje wynik do operandu LHS * = mnoży operand RHS do operandu LHS i przypisuje wynik do operandu LHS / = dzieli operand RHS na operand LHS i przypisuje wynik do operandu LHS
Jak pokazano w powyższej tabeli, jeśli x i y są operandami, x + = y jest równoważne x = x + y.
Podobnie,
x - = y jest równoważne x = x-y.
x * = y jest równoważne z x = x * y.
x / = y jest równoważne z x = x / y.
Poniższy przykład programowania demonstruje te operatory przypisania.
#include #include using namespace std; int main() { int x,y; cout<>y; x = y; cout<<'
Value of x = '< Wynik:
Wpisz zmienną wejściową y: 4
Wartość x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1

W powyższym przykładzie zademonstrowaliśmy zarówno operatory przypisania, jak i przypisania złożonego.
Uwaga: Możemy również łączyć inne operatory binarne, takie jak%,<>, &, |, ^ itd. do złożonych instrukcji przypisania oprócz tych, które zostały już pokazane.
html5 pytania do wywiadów i odpowiedzi dla doświadczonych
Inni operatorzy
Do tej pory zbadaliśmy wszystkie główne operatory w C ++. Istnieje kilka dodatkowych operatorów C ++, które wymagają naszej uwagi.
Te operatory obejmują:
(i) wielkość operatora
sizeof jest operatorem jednoargumentowym, który jest szeroko używany w C i C ++. Sizeof zwraca rozmiar swojego operandu. Wartość zwracana jest zwykle całką bez znaku oznaczoną przez „size_t”.
Operator Sizeof ma wiele zastosowań w językach C i C ++. Można go używać do sprawdzania rozmiaru zmiennych, tablic lub wyrażeń, a nawet do alokowania bloków pamięci.
(ii) Warunkowy operator trójskładnikowy
Operator warunkowy w C ++ może służyć jako zamiennik instrukcji if-else.
Ogólna składnia operatora warunkowego to:
jak znaleźć klucz bezpieczeństwa sieci na moim komputerze
Stan: schorzenie? wyrażenie1: wyrażenie2;
Jeśli warunek jest spełniony, zostanie ocenione wyrażenie 1. Jeśli warunek jest fałszywy, zostanie obliczone wyrażenie2.
Należy pamiętać, że wyrażenie1 i wyrażenie2 muszą być tego samego typu danych, aby uniknąć potencjalnych błędów.
Sugerowana lektura => Operator potrójny w C #
(iii) Operator przecinka
Operator przecinka reprezentowany jako token „,” może być używany zarówno jako operator, jak i separator.
Jako operator przecinek jest używany, gdy istnieje więcej niż jedno wyrażenie do oceny. Do LHS przypisane jest tylko skrajne prawe wyrażenie.
Na przykład,rozważ następujące wyrażenie.
x = (y = 4, y + 1);
W tym wyrażeniu mamy dwa wyrażenia po prawej stronie oddzielone przecinkiem. Tutaj przecinek działa jako operator. Najpierw zostanie obliczone wyrażenie y = 4. Następnie następne wyrażenie y + 1 zostanie ocenione przy użyciu wyniku pierwszego wyrażenia, tj. Y = 4. Zatem wartość y + 1 będzie wynosić 5 i ta wartość zostanie przypisana do x.
Jako separatora można użyć przecinka w dowolnym miejscu, aby oddzielić definicje, listę parametrów itp.
(iv) Operator dostępu do członków
Istnieją dwa operatory, które są używane do uzyskiwania dostępu do poszczególnych elementów członkowskich klas, struktur lub unii w C ++. Są to operator kropki (.) I operator strzałki (->). Szczegółowo poznamy te operatory, gdy nauczymy się programowania obiektowego w C ++.
Poniższy przykład demonstruje użycie sizeof, przecinka i operatora warunkowego.
#include #include using namespace std; int main() { int x,y; x = (y=3,y+4); cout<<'Value of x = '< Wynik:
Wartość x = 7
Zmienna x jest większa niż 5
sizeof (x): 4 sizeof (y): 4
Zrzut ekranu tego samego znajduje się poniżej.

Jak pokazano w powyższym programie, najpierw mamy zadeklarowane dwie zmienne i oddzielone przecinkiem. (przecinek jako separator). Następnie mamy operator przecinka z dwoma wyrażeniami. Jak widać z danych wyjściowych, wartość wyrażenia znajdującego się po prawej stronie jest przypisana do zmiennej x. Następnie demonstrujemy operator warunkowy, aby ocenić, czy x jest mniejsze niż 5.
Na koniec demonstrujemy użycie operatora sizeof. Tutaj używamy operatora sizeof, aby uzyskać rozmiar zmiennych x i y. Ponieważ obie są zmiennymi całkowitymi, zwracany rozmiar to 4 bajty.
(v) Pierwszeństwo i łączność operatorów
Widzieliśmy już prawie wszystkie operatory C ++ i wiemy, że można ich używać w wyrażeniach do wykonywania określonych operacji. Ale wyrażenia, które widzieliśmy w przykładach, są proste i bezpośrednie. Jednak w zależności od naszych wymagań wyrażenia stają się coraz bardziej złożone.
Takie złożone wyrażenia będą miały więcej niż jeden operator i wiele operandów. W takiej sytuacji musimy ocenić, który operator ma zostać oceniony jako pierwszy.
Na przykładrozważ następujące wyrażenie.
x = 4 + 5/3;
Tutaj mamy operatory + i / i musimy zdecydować, które wyrażenie zostanie ocenione jako pierwsze. Z matematycznego punktu widzenia wiemy, że podział zostanie przeprowadzony przed dodaniem. Zatem wyrażenie stanie się x = 4 + (5/3) = 5.
Ale gdy kompilator ma do czynienia z taką sytuacją, musimy mieć również podobny mechanizm decydowania o kolejności operacji, aby mógł poprawnie ocenić wyrażenie.
Kolejność, w jakiej obliczane są operatory w wyrażeniu złożonym, nazywana jest „Pierwszeństwo” operatora. C ++ ma zdefiniowane pierwszeństwo dla wszystkich operatorów, a operatory o wyższym priorytecie są oceniane jako pierwsze.
Co się dzieje, gdy w wyrażeniu o tym samym priorytecie mamy obok siebie dwa operatory? W tym miejscu pojawia się asocjatywność operatora.
Asocjatywność mówi kompilatorowi, czy oceniać wyrażenie w sekwencji od lewej do prawej, czy od prawej do lewej. W ten sposób korzystając z pierwszeństwa i asocjatywności operatora, możemy skutecznie ocenić wyrażenie i uzyskać pożądany wynik.
C ++ udostępnia tabelę zawierającą pierwszeństwo i łączność różnych operatorów, których używa.
Ta tabela jest podana poniżej.
Pierwszeństwo / łączność Operator Opis 1 Brak ::
:: Operator rozpoznawania zakresu
(jednoargumentowe)
(dwójkowy) 2 L-> R ()
()
()
{}
rodzaj()
rodzaj{}
()
.
->
++
––
typid
const_cast
dynamic_cast
reinterpret_cast
static_cast Zdanie wtrącone
Wywołanie funkcji
Inicjalizacja
Jednolita inicjalizacja (C ++ 11)
Funkcjonalny odlew
Rzutowanie funkcjonalne (C ++ 11)
Indeks tablicy
Dostęp do członka z obiektu
Dostęp do elementu członkowskiego z obiektu ptr
Post-inkrementacja
Post-dekrementacja
Informacje o typie czasu wykonywania
Odrzuć const
Rzutowanie sprawdzane w czasie wykonywania
Rzutowanie jednego typu na inny Rzutowanie sprawdzane w czasie kompilacji 3 R-> L +
-
++
––
!
~
(rodzaj)
rozmiar
&
*
Nowy
Nowy()
kasować
kasować() Unary więcej
Jednoargumentowy minus
Wstępny przyrost
Dekrementacja wstępna
Logiczne NIE
Bitowe NIE
Obsada w stylu C.
Rozmiar w bajtach
Adres
Dereference
Dynamiczna alokacja pamięci
Dynamiczna alokacja tablicy
Dynamiczne usuwanie pamięci
Dynamiczne usuwanie tablicy 4 L-> R -> *
. * Selektor wskaźnika elementu członkowskiego
Selektor obiektu członkowskiego 5 L-> R *
/
% Mnożenie
Podział
Moduł 6 L-> R +
- Dodanie
Odejmowanie 8 L-> R <
<=
>
> = Porównanie mniej niż
Porównanie mniejsze lub równe
Porównanie większe niż
Porównanie większe lub równe 9 L-> R !BŁĄD! niedozwolony znak '!' Równość
Nierówność 10 L-> R & Bitowe AND 11 L-> R ^ Bitowe XOR 12 L-> R | Bitowe OR 13 L-> R && Logiczne AND 14 L-> R || Logiczne LUB 15 R-> L ?:
=
* =
/ =
% =
+ =
- =
<<=
>> =
& =
| =
^ = Warunkowo (patrz uwaga poniżej)
Zadanie
Przypisanie mnożenia
Przypisanie działu
Przypisanie modułu
Zadanie dodatkowe
Przypisanie odejmowania
Przypisanie z przesunięciem bitowym w lewo
Przypisanie z przesunięciem bitowym w prawo
Przypisanie bitowe AND
Przypisanie bitowe OR
Przypisanie bitowe XOR 16 R-> L rzucać Wyraz twarzy 17 L-> R , Operator przecinka
Uwagi:
- Poziom pierwszeństwa 1 jest najwyższym poziomem pierwszeństwa, a poziom 17 najniższym. Operatory z wyższym poziomem pierwszeństwa są oceniane jako pierwsze.
- L-> R oznacza asocjatywność od lewej do prawej.
- R-> L oznacza skojarzenie od prawej do lewej.
Wniosek
Chodzi o operatory w C ++.
Omówiliśmy prawie wszystkich operatorów. Niektóre konkretne operatory obecne w powyższej tabeli priorytetów, których nie omówiliśmy, zostaną omówione zgodnie z tematami, które omówimy w naszych nadchodzących samouczkach.
=> Zobacz tutaj, aby poznać pełną listę samouczków języka C ++
rekomendowane lektury
- Przykłady arytmetyki i operatorów logicznych w skrypcie powłoki Unix
- Operatory Pythona
- Nowe / Usuń operatory w C ++ z przykładami
- Typy danych w Pythonie
- Instrukcje warunkowe systemu Unix: If Then Else i operatory relacyjne
- Python DateTime Tutorial z przykładami
- Samouczek dotyczący wstrzykiwania HTML: typy i zapobieganie z przykładami
- Polecenie Cut w systemie Unix z przykładami