Programowanie D - Operatory

Operator to symbol, który mówi kompilatorowi, aby wykonał określone operacje matematyczne lub logiczne. Język D jest bogaty we wbudowane operatory i zapewnia następujące typy operatorów -

  • Operatory arytmetyczne
  • Operatorzy relacyjni
  • Operatory logiczne
  • Operatory bitowe
  • Operatory przypisania
  • Różne operatory

W tym rozdziale opisano po kolei operatory arytmetyczne, relacyjne, logiczne, bitowe, przypisania i inne.

Operatory arytmetyczne

W poniższej tabeli przedstawiono wszystkie operatory arytmetyczne obsługiwane przez język D. Przyjmij zmiennąA posiada 10 i zmienną B mieści wtedy 20 -

Pokaż przykłady

Operator Opis Przykład
+ Dodaje dwa operandy. A + B daje 30
- Odejmuje drugi operand od pierwszego. A - B daje -10
* Mnoży oba operandy. A * B daje 200
/ Dzieli licznik przez mianownik. B / A daje 2
% Zwraca resztę z dzielenia liczb całkowitych. B% A daje 0
++ Operator inkrementacji zwiększa wartość całkowitą o jeden. A ++ daje 11
- Operator zmniejszania wartości zmniejsza wartość całkowitą o jeden. A - daje 9

Operatorzy relacyjni

Poniższa tabela przedstawia wszystkie operatory relacyjne obsługiwane przez język D. Przyjmij zmiennąA posiada 10 i zmienną B mieści 20, a następnie -

Pokaż przykłady

Operator Opis Przykład
== Sprawdza, czy wartości dwóch operandów są równe, czy nie, jeśli tak, warunek staje się prawdziwy. (A == B) nie jest prawdą.
! = Sprawdza, czy wartości dwóch operandów są równe, czy nie, jeśli wartości nie są równe, warunek staje się prawdziwy. (A! = B) jest prawdą.
> Sprawdza, czy wartość lewego operandu jest większa niż wartość prawego operandu. Jeśli tak, warunek staje się prawdziwy. (A> B) nie jest prawdą.
< Sprawdza, czy wartość lewego operandu jest mniejsza niż wartość prawego operandu, jeśli tak, warunek staje się prawdziwy. (A <B) jest prawdą.
> = Sprawdza, czy wartość lewego operandu jest większa lub równa wartości prawego operandu, jeśli tak, warunek staje się prawdziwy. (A> = B) nie jest prawdą.
<= Sprawdza, czy wartość lewego operandu jest mniejsza lub równa wartości prawego operandu, jeśli tak, warunek staje się prawdziwy. (A <= B) jest prawdą.

Operatory logiczne

W poniższej tabeli przedstawiono wszystkie operatory logiczne obsługiwane przez język D. Przyjmij zmiennąA zawiera 1 i zmienną B posiada 0, a następnie -

Pokaż przykłady

Operator Opis Przykład
&& Nazywa się to operatorem logicznym AND. Jeśli oba operandy są niezerowe, warunek staje się prawdziwy. (A && B) jest fałszem.
|| Nazywa się to operatorem logicznym OR. Jeśli którykolwiek z dwóch operandów jest niezerowy, warunek staje się prawdziwy. (A || B) jest prawdą.
! Nazywa się to operatorem logicznym NOT. Służy do odwracania stanu logicznego operandu. Jeśli warunek jest spełniony, operator logiczny NOT spowoduje fałsz. ! (A && B) jest prawdą.

Operatory bitowe

Operatory bitowe działają na bitach i wykonują operacje bit po bicie. Tabele prawdy dla &, | i ^ są następujące -

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

Załóżmy, że A = 60; i B = 13. W formacie binarnym będą one następujące -

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A | B = 0011 1101

A ^ B = 0011 0001

~ A = 1100 0011

W poniższej tabeli wymieniono operatory bitowe obsługiwane przez język D. Załóżmy, że zmienna A zawiera 60, a zmienna B 13, a następnie -

Pokaż przykłady

Operator Opis Przykład
& Operator binarny AND kopiuje trochę do wyniku, jeśli istnieje w obu operandach. (A i B) da 12, oznacza 0000 1100.
| Operator binarny OR kopiuje bit, jeśli istnieje w którymkolwiek z operandów. (A | B) daje 61. Oznacza 0011 1101.
^ Binarny operator XOR kopiuje bit, jeśli jest ustawiony w jednym operandzie, ale nie w obu. (A ^ B) daje 49. Oznacza 0011 0001
~ Operator dopełniacza binarnego jest jednoargumentowy i powoduje „odwracanie” bitów. (~ A) daje -61. Oznacza 1100 0011 w postaci dopełnienia 2.
<< Binarny operator przesunięcia w lewo. Wartość lewego operandu jest przesuwana w lewo o liczbę bitów określoną przez prawy operand. A << 2 daje 240. Oznacza 1111 0000
>> Binarny operator przesunięcia w prawo. Wartość lewego operandu jest przesuwana w prawo o liczbę bitów określoną przez prawy operand. A >> 2 daje 15. Środki 0000 1111.

Operatory przypisania

Następujące operatory przypisania są obsługiwane przez język D -

Pokaż przykłady

Operator Opis Przykład
= Jest to prosty operator przypisania. Przypisuje wartości z operandów po prawej stronie do operandów po lewej stronie C = A + B przypisuje wartość A + B do C.
+ = Jest to operator dodawania AND przypisania. Dodaje prawy operand do lewego operandu i przypisuje wynik do lewego operandu C + = A jest równoważne C = C + A
- = Jest to operator odejmowania AND przypisania. Odejmuje prawy operand od lewego operandu i przypisuje wynik lewemu operandowi. C - = A jest równoważne C = C - A
* = Jest operatorem mnożenia AND przypisania. Mnoży prawy operand z lewym operandem i przypisuje wynik lewemu operandowi. C * = A jest równoważne C = C * A
/ = Jest operatorem dzielenia AND przypisania. Dzieli lewy operand z prawym operandem i przypisuje wynik lewemu operandowi. C / = A jest równoważne C = C / A
% = Jest to operator przypisania modułu AND. Pobiera moduł używając dwóch operandów i przypisuje wynik do lewego operandu. C% = A jest równoważne C = C% A
<< = Jest to lewy operator przypisania AND. C << = 2 to to samo, co C = C << 2
>> = Jest to operator przypisania w prawo ORAZ. C >> = 2 to to samo, co C = C >> 2
& = Jest to operator przypisania bitowego AND. C & = 2 to to samo, co C = C & 2
^ = Jest to bitowe OR i operator przypisania. C ^ = 2 to to samo, co C = C ^ 2
| = Jest bitowym operatorem OR i przypisaniem C | = 2 to to samo, co C = C | 2

Operatory różne - Sizeof i Ternary

Istnieje kilka innych ważnych operatorów, w tym sizeof i ? : obsługiwane przez język D.

Pokaż przykłady

Operator Opis Przykład
rozmiar() Zwraca rozmiar zmiennej. sizeof (a), gdzie a jest liczbą całkowitą, zwraca 4.
& Zwraca adres zmiennej. &za; podaje rzeczywisty adres zmiennej.
* Wskaźnik do zmiennej. *za; daje wskaźnik do zmiennej.
? : Wyrażenie warunkowe Jeśli warunek jest prawdziwy, wartość X: w przeciwnym razie wartość Y.

Pierwszeństwo operatorów w D.

Pierwszeństwo operatorów określa grupowanie terminów w wyrażeniu. Wpływa to na sposób oceny wyrażenia. Niektóre operatory mają pierwszeństwo przed innymi.

Na przykład operator mnożenia ma wyższy priorytet niż operator dodawania.

Rozważmy wyrażenie

x = 7 + 3 * 2.

Tutaj x ma przypisane 13, a nie 20. Prostą przyczyną jest to, że operator * ma wyższy priorytet niż +, stąd 3 * 2 jest obliczane jako pierwsze, a następnie wynik jest dodawany do 7.

Tutaj operatory o najwyższym priorytecie pojawiają się na górze tabeli, a operatory o najniższym priorytecie - na dole. W wyrażeniu najpierw są oceniane operatory o wyższym priorytecie.

Pokaż przykłady

Kategoria Operator Łączność
Przyrostek () [] ->. ++ - - Z lewej na prawą
Jednoargumentowe + -! ~ ++ - - (typ) * & sizeof Od prawej do lewej
Mnożny * /% Z lewej na prawą
Przyłączeniowy + - Z lewej na prawą
Zmiana << >> Z lewej na prawą
Relacyjny <<=>> = Z lewej na prawą
Równość ==! = Z lewej na prawą
Bitowe AND & Z lewej na prawą
Bitowe XOR ^ Z lewej na prawą
Bitowe OR | Z lewej na prawą
Logiczne AND && Z lewej na prawą
Logiczne LUB || Z lewej na prawą
Warunkowy ?: Od prawej do lewej
Zadanie = + = - = * = / =% = >> = << = & = ^ = | = Od prawej do lewej
Przecinek , Z lewej na prawą