czwartek, 26 kwietnia 2018

Język C - Operatory

C - Operatory

Operator jest symbolem, który nakazuje kompilatorowi wykonywanie określonych funkcji matematycznych lub logicznych. Język C jest bogaty w wbudowane operatory i zapewnia następujące typy operatorów -
  • Operatory arytmetyczne
  • Operatory relacyjne
  • Operatory logiczne
  • Operatory bitowe
  • Operatorzy przypisania
  • Różne operatory
W tym rozdziale zajmiemy się sposobem działania każdego operatora.

Operatory arytmetyczne

Poniższa tabela pokazuje wszystkie operatory arytmetyczne obsługiwane przez język C. Załóżmy, że zmienna A zawiera 10, a zmienna B zawiera 20, a następnie -

Operator
Opis
Przykład
+
Dodaje dwa operandy.
A + B = 30
-
Odejmuje drugi operand od pierwszego.
A - B = -10
*
Mnoży oba operandy.
A * B = 200
/
Dzieli licznik za pomocą licznika.
B / A = 2
%
Operator modulo, pozostałość po dzieleniu całkowitym.
B% A = 0
++
Operator inkrementacji zwiększa wartość całkowitą o jeden.
A ++ = 11
-
Operator dekrementacji zmniejsza wartość całkowitą o jeden.
A-- = 9

Operatory relacyjne

W poniższej tabeli przedstawiono wszystkie operatory relacyjne obsługiwane przez C. Załóżmy, że zmienna A zawiera 10, a zmienna B – 20

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

Operatory logiczne

Poniższa tabela pokazuje wszystkie operatory logiczne obsługiwane przez język C. Załóżmy, że zmienna A zawiera 1, a zmienna B zawiera 0.

Operator
Opis
Przykład
&&
Wywoływany operator logiczny AND. Jeśli oba operandy są niezerowe, warunek staje się prawdziwy.
(A i B) jest fałszywe.
||
Nazywany logicznym operatorem OR. Jeśli którykolwiek z dwóch argumentów jest niezerowy, warunek staje się prawdziwy.
(A || B) jest prawdziwe.
!
Wywoływany operator logiczny NOT. Służy do odwrócenia stanu logicznego swojego operandu. Jeśli warunek jest prawdziwy, to operator logiczny NOT sprawi, że będzie on fałszywy.
! (A && B) jest prawdziwe.

Operatory bitowe

Operator bitowy działa na bitach i wykonuje operacje bit po bicie. Tabele prawdy dla &, | i ^ są następujące:
str
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
Przyjmij A = 60 i B = 13 w formacie binarnym, będą one następujące:
A = 0011 1100
B = 0000 1101
-----------------
A i B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~ A = 1100 0011
Poniższa tabela zawiera operatory bitowe obsługiwane przez C. Załóżmy, że zmienna "A" zawiera 60, a zmienna "B" zawiera 13

Operator
Opis
Przykład
&
Operator bitowy AND kopiuje bit do wyniku, jeśli istnieje w obu operandach.
(A i B) = 12, tj. 0000 1100
|
Operator binarny OR kopiuje bit, jeśli istnieje w którymkolwiek z operandów.
(A | B) = 61, tj. 0011 1101
^
Binarny operator XOR kopiuje bit, jeśli jest ustawiony w jednym argumencie, ale nie w obu.
(A ^ B) = 49, tj. 0011 0001
~
Operator jest unarny i ma efekt "odwracania" bitów.
(~ A) = -60, tj. 1100 0100 w postaci dopełniacza 2.
<< 
Operator binarnego przesunięcia w lewo. Wartość lewego argumentu jest przesuwana w lewo o liczbę bitów określoną przez prawy operand.
A << 2 = 240 ie, 1111 0000
>> 
Operator binarnego przesunięcia w prawo. Wartość lewego argumentu jest przesuwana w prawo o liczbę bitów określoną przez prawy operand.
A >> 2 = 15, 0000 1111

Operatory przypisania

Poniższa tabela zawiera listę operatorów przypisania obsługiwanych przez język C -

Operator
Opis
Przykład
=
Prosty operator przypisania. Przypisuje wartości z operandów z prawej strony do lewego argumentu z lewej strony
C = A + B przypisuje wartość A + B do C
+ =
Dodaj operator AND przypisania. Dodaje prawy operand do lewego argumentu i przypisuje wynik do lewego argumentu.
C + = A jest równoważne C = C + A
- =
Odejmij operator AND przypisania. Odejmuje prawy argument od lewego argumentu i przypisuje wynik do lewego argumentu.
C - = A jest równoważne C = C - A
* =
Pomnóż i operator przydziału. Mnoży prawy operand z lewym operandem i przypisuje wynik do lewego argumentu.
C * = A jest równoważne C = C * A
/ =
Dziel i operator przypisania. Dzieli lewy operand z prawym operandem i przypisuje wynik do lewego argumentu.
C / = A jest równoważne C = C / A
% =
Modulo i operator przydziału. Moduł przy użyciu dwóch argumentów i przypisuje wynik do lewego argumentu.
C% = A jest równoważne C = C% A
<< =
Operator w lewo i operator przypisania.
C << = 2 jest takie samo jak C = C << 2
>> =
Operator w prawo i operator przypisania.
C >> = 2 jest takie samo jak C = C >> 2
& =
Operator bitowy ORAZ operator przypisania.
C & = 2 jest takie samo jak C = C i 2
^ =
Wyłącznie bitowe OR i operator przypisania.
C ^ = 2 jest takie samo jak C = C ^ 2
| =
Bitowe włącznie operatora OR i przypisania.
C | = 2 jest takie samo jak C = C | 2

Różne operatory sizeof & ternary

Oprócz operatorów omówionych powyżej, istnieje kilka innych ważnych operatorów, w tym sizeof i ? : obsługiwane przez język C.

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


Pierwszeństwo operatorów w C

Priorytet operatora określa grupowanie określeń w wyrażeniu i decyduje o sposobie oceny wyrażenia. Niektóre operatory mają wyższy priorytet niż inne na przykład operator mnożenia ma wyższy priorytet niż operator dodawania.
Na przykład: x = 7 + 3 * 2; Tutaj do x przypiszemy 13, a nie 20 ponieważ operator * ma wyższy priorytet niż +, a więc najpierw wykonamy mnożenie 3 * 2, a następnie dodamy 7.
Tutaj operatory o najwyższym priorytecie pojawiają się u góry tabeli, a te z najniższym pojawiają się na dole. W wyrażeniu operatory o wyższym priorytecie będą oceniane najpierw.

Kategoria
Operator
Powiązanie
Postfix
() [] ->. ++ - -
Od lewej do prawej
Unary
+ -! ~ ++ - - (type) * i sizeof
Od prawej do lewej
Multiplicative
* /%
Od lewej do prawej
Additive
+ -
Od lewej do prawej
Shift
<< >>
Od lewej do prawej
Relational
<<=>> =
Od lewej do prawej
Equality
==! =
Od lewej do prawej
Bitwise AND
&
Od lewej do prawej
Bitwise XOR
^
Od lewej do prawej
Bitwise OR
|
Od lewej do prawej
Logical AND
&&
Od lewej do prawej
Logical OR
||
Od lewej do prawej
Conditional
?:
Od prawej do lewej
Assignment
= + = - = * = / =% = >> = << = & = ^ = | =
Od prawej do lewej
Comma
,
Od lewej do prawej


Poprzednia strona                                                          Następna strona


Brak komentarzy:

Prześlij komentarz