Wbudowane operatory, pierwszeństwo i kojarzenie języka C++

Język C++ obejmuje wszystkie operatory C i dodaje kilka nowych operatorów. Operatory określają oszacowania wykonywane na jednym lub większej liczbie operandów.

Pierwszeństwo i kojarzenie

Pierwszeństwo operatora określa kolejność operacji w wyrażeniach zawierających więcej niż jeden operator. Skojarzenie operatora określa, czy w wyrażeniu, które zawiera wiele operatorów o tym samym pierwszeństwie, operand jest grupowany z tym, który znajduje się po lewej stronie, czy z jednej po prawej stronie.

Alternatywne pisownie

Język C++ określa alternatywne pisownie dla niektórych operatorów. W języku C alternatywne pisownie są udostępniane jako makra w nagłówku <iso646.h> . W języku C++te alternatywy są słowami kluczowymi, a użycie iso646.h> lub równoważnego <<ciso646> języka C++ jest przestarzałe. W języku Microsoft C++ /permissive- opcja lub /Za kompilatora jest wymagana do włączenia alternatywnych pisowni.

Pierwszeństwo operatora języka C++ i tabela asocjacji

W poniższej tabeli przedstawiono pierwszeństwo i łączność operatorów C++ (od najwyższego do najniższego pierwszeństwa). Operatory o tym samym numerze pierwszeństwa mają równe pierwszeństwo, chyba inny stosunek jest jawnie wymuszony przez nawiasy.

Opis operatora Operator Alternatywne rozwiązanie
Pierwszeństwo grupy 1, brak kojarzenia
Rozpoznawanie zakresu ::
Pierwszeństwo grupy 2, od lewej do prawej skojarzenia
Wybór elementu członkowskiego (obiekt lub wskaźnik) . lub ->
Indeks dolny tablicy []
Wywołanie funkcji ()
Przyrostek postfiksu ++
Dekrementacja przyrostka --
Nazwa typu typeid
Konwersja typu stałego const_cast
Konwersja typu dynamicznego dynamic_cast
Ponowne interpretowanie konwersji typów reinterpret_cast
Konwersja typu statycznego static_cast
Pierwszeństwo grupy 3, od prawej do lewej asocjacji
Rozmiar obiektu lub typu sizeof
Przyrostek prefiksu ++
Dekrementacja prefiksu --
Uzupełnieniem jednego ~ compl
Nie logiczne ! not
Negacja jednoargumentowa -
Jednoargumentowy plus +
Adres-of &
Pośrednia *
Tworzenie obiektu new
Niszczenie obiektu delete
Oddanych ()
Pierwszeństwo grupy 4, od lewej do prawej asocjacji
Wskaźnik do elementu członkowskiego (obiekty lub wskaźniki) .* lub ->*
Pierwszeństwo grupy 5, od lewej do prawej skojarzenia
Mnożenie *
Dywizji /
Modulo %
Pierwszeństwo grupy 6, od lewej do prawej asocjacji
Dodatek +
Odejmowania -
Pierwszeństwo grupy 7, od lewej do prawej kojarzenie
Przesunięcie w lewo <<
Przesunięcie w prawo >>
Pierwszeństwo grupy 8, od lewej do prawej skojarzenia
Mniejsze niż <
Większe niż >
Mniejsze niż lub równe <=
Większe niż lub równe >=
Pierwszeństwo grupy 9, od lewej do prawej skojarzenia
Równości ==
Nierówności != not_eq
Grupa 10 pierwszeństwo od lewej do prawej skojarzenia
Bitowe I & bitand
Pierwszeństwo grupy 11, od lewej do prawej skojarzenia
Bitowe wyłączne OR ^ xor
Pierwszeństwo grupy 12, od lewej do prawej skojarzenia
Bitowe or inkluzywne OR | bitor
Pierwszeństwo grupy 13, od lewej do prawej skojarzenia
Logiczne AND && and
Pierwszeństwo grupy 14, od lewej do prawej skojarzenia
Logiczne OR || or
Pierwszeństwo grupy 15, od prawej do lewej skojarzenia
Warunkowe ? :
Przypisanie =
Przypisanie mnożenia *=
Przypisanie dzielenia /=
Przypisanie modulo %=
Dodawanie przypisania +=
Przypisanie odejmowania -=
Przypisanie przesunięcia w lewo <<=
Przypisanie przesunięcia w prawo >>=
Bitowe i przypisanie &= and_eq
Bitowe inkluzywne or przypisania |= or_eq
Bitowe wyłączne or przypisania ^= xor_eq
wyrażenie throw throw
Pierwszeństwo grupy 16, od lewej do prawej skojarzenia
Comma ,

Zobacz też

Przeciążenie operatora