Ten artykuł zawiera kompleksowy samouczek, który pomoże ci w poznawaniu asocjacyjności i pierwszeństwa operatora w C.
Pierwszeństwo operatora w C
Pierwszeństwo operatora opisuje sekwencję, w której ocenia się kilku operatorów podczas oceny wyrażeń. Na przykład, jeśli wyrażenie ma zarówno operatorów dodawania, jak i mnożenia, co należy najpierw ocenić? Odpowiedź jest prosta, C postępuje zgodnie z pewnymi zasadami w celu rozwiązania takiej dwuznaczności, powszechnie znanej jako Pierwszeństwo operatora. W c, Pierwszeństwo operatora jest podzielony na 17 poziomów, od nieusowych operatorów po trójskładnikowy operator warunkowy. Najczęściej używane operatorzy, tacy jak operatorzy arytmetyczne, operatorzy relacyjne, operatorzy logiczne i operatorzy bitowate, postępują zgodnie ze standardem C Pierwszeństwo operatora protokół.
Precedens Zasady decydują, którzy operatorzy mają wyższy priorytet niż inni podczas oceny wyrażeń. Kilka rodzajów operatorów w języku programowania C ma różne stopnie precedens. Na przykład, niemacy operatorzy mają większy priorytet niż operatorzy binarni. Poniżej znajduje się lista operatorów posortowanych w kolejności rosnącej precedens:
Operator | Znaczenie operatora | Asocjacyjność |
() [] [] -> . | Połączenie funkcjonalne Odniesienie elementu tablicy Wybór członków pośredni Wybór członka bezpośredniego | Od lewej do prawej |
! ~ + - ++ - I * rozmiar (typ) | Logiczna negacja Uzupełnienie Bitwise (1) Unary Plus Unary minus Przyrost Zmniejszenie Dereference (adres) Odniesienie wskaźnika Zwraca rozmiar obiektu Typecast (konwersja) | Od prawej do lewej |
* / % | Zwielokrotniać Dzielić Reszta | Od lewej do prawej |
+ - | Binarny plus (dodatek) Binarny minus (odejmowanie) | Od lewej do prawej |
<< >> | Lewa zmiana Prawa zmiana | Od lewej do prawej |
< <= > > = | Mniej niż Mniej niż lub równy Lepszy niż Większe lub równe | Od lewej do prawej |
== != | Równy Nie równe | Od lewej do prawej |
I | Bitwise i | Od lewej do prawej |
^ | Bitwise Exclusive Or | Od lewej do prawej |
| | Bitwise lub | Od lewej do prawej |
&& | Logiczne i | Od lewej do prawej |
|| | Logiczne lub | Od lewej do prawej |
?: | Operator warunkowy | Od prawej do lewej |
= *= /= %= += -= & = ^= | = <<= >> = | Proste zadanie Przypisz produkt Przypisz iloraz Przypisz resztę Przypisać sumę Przypisać różnicę Przypisz Bitwise i Przypisz Bitwise Xor Przypisać Bitwise lub Przypisz lewą zmianę Przypisz prawą zmianę | Od prawej do lewej |
, | Separator wyrażeń | Od lewej do prawej |
Te zasady kierują kompilatorem w zakresie oceny wyrażeń z wieloma operatorami w tym samym wyrażeniu. Na przykład operator mnożenia ma większe pierwszeństwo niż operator dodawania w równaniu A + B * C, zgodnie z precedens zasady. Dlatego kompilator najpierw oceni wyrażenie B * C przed dodaniem A do wyniku.
Spójrzmy na przykład Pierwszeństwo operatora poprzez kod.
#włączaćCztery zmienne a, b, c i d są zadeklarowane w powyższym kodzie, a ich wartości początkowe wynoszą odpowiednio 43, 11, 16 i 31. Następnie stosuje do tych zmiennych różnorodnych operatorów arytmetycznych i przypisania. Wyrażenie zwiększa wartość A przy użyciu operatora wstępnego wzrostu ++ A, mnoży wynik przez operatora po zabezpieczeniu B, a następnie dodaje wynik do podziału C przez wstępnie nakreśniętą wartość D wynoszącą d. (Korzystanie z operatora przedprzedażnego -D). Wynik zmienny jest następnie wykorzystywany do przechowywania całkowitego wyniku tego wyrażenia.
Wyjście
Asocjacyjność w c
Asocjacyjność odnosi się do kolejności oceniania operatorów podczas wyrażenia z tym samym pierwszeństwo. Od lewej do prawej i prawej do lewej asocjacyjność to dwie formy asocjacyjności w C. Jeśli dwóch operatorów ma to samo precedens, Są one oceniane od lewej do prawej zgodnie z koncepcją od lewej do prawej asocjacyjność. Niemniej jednak, jeśli obserwuje się to samo pierwszeństwo, operatorzy są oceniani od prawej do lewej według prawej do lewej asocjacyjność.
Na przykład operator przyrostu ++ ma od prawej do lewej asocjacyjność, co oznacza przyrost operator jest oceniany po zmiennej. Podczas gdy logiczny i operator ma od lewej do prawej asocjacyjność, co oznacza, że operator jest oceniany od lewej do prawej.
#włączaćTrzy zmienne a, b i c są zadeklarowane w tym kodzie i są inicjowane odpowiednio do 6, 3 i 2. Następnie stosuje operacje mnożenia i podziału do tych zmiennych w wyrażeniu. Mnożenie i podział są uszeregowane od lewej do prawej w C na podstawie ich asocjacyjność ponieważ mają ten sam poziom pierwszeństwa. Wskazuje to, że operacja podziału jest na pierwszym miejscu, a następnie operacja mnożenia podczas oceny wyrażenia, a * b / c.
Wyjście
Wniosek
Pierwszeństwo operatora I asocjacyjność są kluczowymi pojęciami w programowaniu C, które pomagają określić kolejność wykonywania wyrażeń. Operatorzy o najwyższych precedens poziom jest oceniany jako pierwszy i asocjacyjność Reguły pomagają określić kolejność, gdy używa się wielu operatorów o tym samym pierwszym pierwszym miejscu. Zrozumienie Pierwszeństwo operatora I asocjacyjność jest niezbędne przy projektowaniu złożonych programów i pomaga w tworzeniu czystszego i wydajniejszego kodu z mniejszą liczbą błędów.