Co to jest precedens i asocjacyjność operatora C

Co to jest precedens i asocjacyjność operatora C
Operatorzy są powszechnie stosowane do wykonywania różnych operacji arytmetycznych i logicznych w C. Język programowania C jest zgodny z określoną kolejnością znaną jako Pierwszeństwo operatora I asocjacyjność Aby określić kolejność operacji podczas wykonywania. Zasady Pierwszeństwo operatora I asocjacyjność Pomoc w pisaniu kodu bezbłędnego i zwiększaj czytelność kodu.

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ć
int main ()
int a = 43, b = 11, c = 16, d = 31;
int wynik = ++ a * b-- +c /--d;
printf ("a = %d \ n", a);
printf ("b = %d \ n", b);
printf ("c = %d \ n", c);
printf ("d = %d \ n", d);
printf („wynik = %d \ n”, wynik);
powrót 0;

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ć
int main ()
int a = 6, b = 3, c = 2;
int wynik = a * b / c;
printf („wynik = %d \ n”, wynik);
powrót 0;

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.