Lista operatorow priorytety id Nieznany

background image

Lista operatorów w najpopularniejszych językach

[

edytuj

]

(do uzupełnienia o pozostałe języki)

operator

liczba

argumentó

w

działanie i zwracana

wartość

występowanie i priorytet (1 –

najwyższy)

C

C+

+

Jav

a

JavaScri

pt

Per

l

Pytho

n

PH

P

zakres::x

::x

2

określenie zakresu lub

przestrzeni nazw danej

zmiennej/odwołanie do

zmiennej globalnej –

zwraca wartość zmiennej

-

1

-

1

Str.pole

wskStr->pole

2

wybór pola ze

struktury

lub

klasy

– zwraca

wartość wybranego pola

1 2

1

2

tablica[n]

[1]

2

wybór wartości z pola

tablicy

o określonym

indeksie – zwraca wartość

wybranego pola

1 2

1

2

funkcja()

zm.

wywołanie

funkcji

operator o zmiennej

liczbie argumentów,

zwraca wartość funkcji

1 2

1

2

sizeof(obiek

t)

1

zwraca rozmiar obiektu

(zmiennej, typu) w

bajtach

1 2

-

-

new typ

delete x

1

alokuje

blok pamięci na

dynamiczną zmienną

danego typu/zwalnia

zaalokowaną pamięć

wskazywaną przez

wskaźnik x

-

2

2

1

*wsk

1

operator wyłuskania

wartości zmiennej ze

wskaźnika

– zwraca

wartość zmiennej

2 3

-

3

&x

1

operator adresu – zwraca

fizyczny adres komórki

pamięci przechowującej

zmienną x; operator

referencji

2 3

-

3

(typ)zmienna

2

operator

rzutowania

zwraca wartość zmiennej

po zrzutowaniu na dany

typ

2 3

2

3

background image

x++
x--

1

inkrementacja

/

dekrementa

cja

postfiksowa – zwraca

wartość zmiennej x,

następnie

zwiększa/zmniejsza ją o 1

2 3

2

3

++x
--x

1

inkrementacja

/

dekrementa

cja

prefiksowa –

zwiększa/zmniejsza

wartość zmiennej o 1 oraz

zwraca jej nową wartość

2 3

2

3

+x
-x

1

unarne operatory znaku

liczby – zwracają wartość

zmiennej po "dopisaniu"

znaku, nie ingerując w

wartość

2

[2

]

3

2

3

~x

1

negacja

bitowa

– zwraca

zmienną z zanegowanymi

wszystkimi bitami, nie

ingerując w wartość

2 3

2

3

!wyrażenie

1

negacja logiczna – zwraca

zanegowaną wartość

wyrażenia, zero dla

wartości niezerowych,

jeden dla zera

2 3

2

3

@x

1

operator kontroli błędów

– zapewnia pominięcie

wyświetlania ostrzeżeń
systemowych dla danej

instrukcji w celu

samodzielnej kontroli

błędów

-

-

-

3

x*y
x/y

2

mnożenie

/

dzielenie

zwraca wartość

iloczynu/ilorazu

zmiennych

3 4

3

4

x%y

2

dzielenie modulo

zwraca resztę z dzielenia

wartości zmiennej x przez

wartość y

3 4

3

4

x+y
x-y

2

dodawanie

/

odejmowanie

– zwraca wartość

sumy/różnicy zmiennych

4 5

4

5

x.y

2

operator złączenia

łańcuchów znaków –

zwraca łańcuch powstały

ze złączenia x i y

-

-

-

5

x<<y
x>>y

2

przesunięcie bitowe

w

5 6

5

6

background image

lewo/w prawo – zwraca

zmienną x po

przesunięciu wszystkich

jej bitów o y pozycji w

lewo/w prawo

(przesunięcie o jedną

pozycję w lewo

odpowiada mnożeniu razy

2, przesunięcie o jedną

pozycję w prawo

odpowiada dzieleniu

przez 2)

x<y
x>y

2

logiczne operatory relacji,

zwracające wartość

niezerową, gdy x jest

mniejszy/większy od y,

zerową w przeciwnym

wypadku

6 7

6

7

x<=y
x>=y

2

logiczne operatory relacji,

zwracające wartość

niezerową, gdy x jest

mniejszy lub

równy/większy lub równy

y, zerową w przeciwnym

wypadku

6 7

6

7

x instanceof

Y

2

operator porównujący typ

zmiennej x z

klasą/interfejsem Y

-

-

7

3

x==y

2

logiczny operator relacji,

zwracający wartość

niezerową, gdy x jest

równy y, zerową w

przeciwnym wypadku

7 8

7

8

x<>y

2

logiczny operator relacji,

zwracający wartość

niezerową, gdy x jest

różny od y, zerową w

przeciwnym wypadku

-

-

-

8

x!=y

2

logiczny operator relacji,

zwracający wartość

niezerową, gdy x jest

różny od y, zerową w

przeciwnym wypadku

7 8

7

8

x===y
x!==y

2

logiczne operatory relacji

z porównaniem typu,

zwracające wartość

niezerową, gdy x jest

równe oraz tego samego

-

-

-

8

background image

typu co y/różne lub

innego typu niż y, zerową

w przeciwnym wypadku

x&y

2

iloczyn bitowy

– zwraca

wartość wynikającą z

operacji iloczynu

logicznego na każdej

parze bitów ze zmiennych

x i y

8 9

8

9

x^y

2

bitowa

suma modulo 2

zwraca wartość

wynikającą z operacji

sumy modulo 2 na każdej

parze bitów ze zmiennych

x i y

9 10 9

10

x|y

2

suma bitowa

– zwraca

wartość wynikającą z

operacji sumy logicznej

na każdej parze bitów ze

zmiennych x i y

10 11 10

11

x&&y

2

iloczyn logiczny

– zwraca

wartość iloczynu

logicznego wyrażeń x i y

– niezerową, gdy oba

wyrażenia są niezerowe,

zerową w innych

przypadkach

11 12 11

12

x||y

2

suma logiczna

– zwraca

wartość sumy logicznej

wyrażeń x i y – zerową,

gdy oba wyrażenia są

zerowe, niezerową w

innych przypadkach

12 13 12

13

x ? y : z

3

operator warunkowy –

zwraca y, gdy x ma

wartość niezerową, z w

przeciwnym wypadku

13 14 13

14

x=y

2

operator przypisania –

przypisuje zmiennej x

wartość zmiennej y

14 15 14

15

x*=y x/=y
x%=y x+=y

x-=y x<<=y
x>>=y x&=y

x^=y x|=y

2

operatory przypisania –

przypisują zmiennej x

wartość odpowiednio x*y,

x/y, itd.

14 15 14

15

x and y

2

niskopriorytetowy

iloczyn

logiczny

-

-

-

16

x xor y

2

niskopriorytetowa

suma

-

-

-

17

background image

modulo 2

x or y

2

niskopriorytetowa

suma

logiczna

-

-

-

18

wyr1, wyr2

2

operator przecinkowy,

służący np. do

grupowania wyrażeń

podczas inicjalizowania

pętli

15 16 15

19

[3]

Przykładowy zapis w

języku C

[

edytuj

]

(zmienna liczba jest typu int)

liczba *= ((liczba=10) + 7) % 3;

Nawiasy w tym przypadku wymusiły zmianę priorytetów operatorów. Działania wykonane
zostaną w porządku narzuconym przez nawiasy. To samo wyrażenie pozbawione nawiasów:

liczba *= liczba = 10 + 7 % 3;

jest również poprawne ze względu na składnię. Wynik będzie jednak inny – pierwsza
wykonana zostanie operacja dzielenia modulo, następnie dodawania, a na końcu oba
przypisania od prawej do lewej.

W języku C kolejność obliczania operandów operatora nie jest gwarantowana ze względu na
zastrzeżenie możliwości optymalizacji kodu wynikowego przez kompilator (nie dotyczy to
operatorów

&&

,

||

,

?:

oraz

,

). Użycie operandów, których obliczenie wartości wpływa na

wartość pozostałych nie gwarantuje takiego samego wyniku we wszystkich implementacjach
języka.

Np. kod:

int i = 1;
tablica[i] = i++;

nie gwarantuje, czy wartość 1 zostanie wstawiona pod indeks 1, czy może pod indeks 2
tablicy.


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron