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ą |