Cześć i witaj. Teraz, gdy rozmawialiśmy o
wszystkich głównych operatorach, fundamentalnych i dziwnych, musimy porozmawiać
o tej małej koncepcji pierwszeństwa operatorów.
Jest to więc w zasadzie ważne, kiedy oceniasz kolejność tych operatorów.
Zatem pierwszeństwo operatorów określa grupowanie terminów i wyrażeń oraz
decyduje o sposobie oceny wyrażenia.
Teraz naprawdę nie musisz nic z tego
rozumieć, jeśli użyjesz nawiasów, do których dojdziemy za chwilę, ale musisz zrozumieć
tę koncepcję, ponieważ jest to część języka, część rozumienia języka.
Zatem pierwszeństwo będzie dyktować kolejność oceny, gdy dwa
operatory współużytkują operand.
I stanie się to jasne na przykładzie.
Na przykład operator mnożenia ma wyższy priorytet niż
operator dodatkowy.
Niektórzy operatorzy będą mieli inną kolejność ocen. Więc jeśli miałbyś zrobić instrukcję
złożoną, w której
wykonujesz wiele różnych obliczeń, na przykład 7 dodać 3 razy 2.
To może mieć
wiele wyników, dodawanie i mnożenie.
Musisz zrozumieć, czy najpierw muszę zrobić dodawanie, czy też powinienem najpierw wykonać mnożenie, ponieważ w zależności
od tego, co zrobisz najpierw, zmienia wynik.
Na przykład to x równa się 7 dodać 3 razy
2, wynik może wynosić 13 lub 20 w
zależności od kolejności obliczania każdego operandu.
Zatem kolejność wykonywania różnych operacji może mieć ogromne znaczenie.
Dlatego musisz zrozumieć pierwszeństwo.
C zawiera szczegółowe zasady dotyczące wyboru tego, co należy zrobić w pierwszej kolejności.
Czy w takim przypadku mnożę plus. Cóż, c powie ci, co się wydarzy.
Idealnie byłoby, gdyby umieścił je w nawiasach, mówiłbyś mu, co ma
robić, podejmowałbyś tę decyzję. Ale jeśli nie umieścisz tego w
nawiasach, język programowania podejmie decyzję za Ciebie.
Zatem w c mnożenie będzie miało wyższy priorytet
niż operator dodawania. Więc co się stanie, to wynik będzie 13.
Teraz możesz powiedzieć 7 dodać 3, czyli 10, a
następnie pomnożyć przez 2, a wynik wyniesie 20.
Albo możesz zrobić 7 dodać 3 razy 2, czyli 7 dodać 6, czyli 13.
W ten sposób możesz mieć różne wartości.
To niejednoznaczne. Czy najpierw robisz plus, czy najpierw mnożesz.
Na szczęście znowu decyduje o tym język. Ale możesz zobaczyć, jakie są dwa różne wyniki.
7 dodać 3 razy 2
lub 7 dodać 3 razy 2. Widzisz tam pauzę.
Teraz c zrobi to drugie. Najpierw wykona mnożenie, ponieważ ma
to wyższy priorytet.
Więc zrobi 3 razy 2, czyli 6, a potem doda do 7.
Zatem wynik x wyniesie 13, ponieważ gwiazdka
ma wyższy priorytet niż dodawanie.
I tak istnieją reguły dla każdego operatora,
który ma pierwszeństwo przed innymi.
Jest poziom pierwszeństwa.
Mnożenie i dzielenie mają wyższy priorytet niż dodawanie i odejmowanie.
Na przykład są one wykonywane jako pierwsze.
Możesz uniknąć tego całego pierwszeństwa i zdecydować, czy podasz
nawiasy, za Ciebie decyduje język.
Nawiasy zawsze grupują wyrażenia o
najwyższym priorytecie. Więc jeśli powiem 7 dodać 3 i zamknę to
w nawiasach, zawsze najpierw dokona dodawanie.
Jeśli powiem 3
razy 2 i zamknę to w
nawiasach, to zawsze zrobi mnożenie, a następnie doda wszystko, co znajduje się poza nawiasami.
Więc naprawdę powinieneś używać tylko nawiasów. Zawsze używaj nawiasów.
W przeciwnym razie język zadecyduje za Ciebie. Musisz zapamiętać wszystkie poziomy
pierwszeństwa, co jest trudne, ponieważ pokażę ci w następnej tabeli.
Istnieje wiele różnych operatorów i musisz znać pierwszeństwo
dla wszystkich tych różnych operatorów.
Może to więc stać się bardzo zagmatwane.
Jest to podobne do tego, że wiesz, że albo pozwalasz językowi wykonać niejawną konwersję za ciebie,
albo robisz to z jawną konwersją z operatorem rzutowania, ten sam typ
pomysłu tutaj, po prostu użyj nawiasów.
Więc jeśli spojrzymy na tę tabelę, którą myślę, że za chwilę przyjrzymy się, ponieważ
najpierw chcę porozmawiać o asocjatywności.
Kojarzenie jest związane z pierwszeństwem, ponieważ co się stanie, jeśli
dwa operatory mają ten sam priorytet. Więc jak ustalisz kolejność.
Cóż, wtedy stosujesz asocjatywność. Dlatego za każdym razem,
gdy operatory mają ten sam poziom pierwszeństwa, należy zastosować dodatkowe reguły.
Tak więc asocjatywność polega w zasadzie na tym, czy
zaczynasz od lewej strony i idziesz w prawo, czy w prawo w lewo.
Więc jeśli udostępniasz operand i oba są wykonywane w tej
samej kolejności, wykonasz je w kolejności instrukcji w
oparciu o regułę asocjatywności. Tak więc dla większości operatorów
kolejność jest od lewej do prawej. Pozwólcie, że pokażę wam przykład.
Jeśli powiesz, że 1 równa się 2 nie jest równe 3, operatory
równa się równa się i nie równa się operator wykrzyknika
równa się mają ten sam priorytet.
Więc w tym przypadku mamy niejednoznaczność. Mamy problem.
Nie wiemy, co najpierw ocenić. Nie wiemy, czy musimy zrobić 1 równa
się 2 lub 2
nie równa się 3 i ma to znaczenie, ponieważ robisz wyrażenie boolowskie.
To jest tutaj wyrażenie boolowskie, więc faceci wracają do prawdy lub fałszu.
Więc to, co byś tutaj zrobił, to zastosowałbyś asocjatywność.
Asocjatywność obu równych jest i nie równych jest od lewej do prawej.
Najpierw zrobisz 1 równa się 2, to będzie fałsz.
A potem powiesz fałsz, które nie
jest równe 3,
a tak nie jest. Czyli 1 równa się
2, a następnie to nie jest równe 3.
Więc wynik będzie fałszywy. Zatem wyrażenie po lewej stronie jest wykonywane jako
pierwsze i przesuwa się w prawo.
Więc sposób, w jaki chcesz o tym myśleć, jest w zasadzie równy tym nawiasom.
Najpierw oszacujesz, że jeden jest równy 2.
A jeśli to ocenia prawdę lub fałsz, wtedy powiesz, że jest to równe 3.
I to jest mylące, ponieważ nie
ma wartości prawda ani fałsz.
Ale 1 równa się równa się pamiętaj, że to operator porównania, a nie operator przypisania.
Nie używamy tutaj zmiennych, więc jest to jeszcze bardziej zagmatwane.
Ale gdybyś umieścił te liczby w
zmiennych, powiedziałbyś po prostu, że jeśli x równa się y, więc jeśli
x wynosi 1, a y wynosi 2, dałoby to 2 fałsz.
Ponieważ oboje nie są równi. A jeśli 3 byłaby kolejną
zmienną z, która jest równa
3, powiesz, czy x równa się y jest fałszem, z
równa się 3. Zatem fałsz
nie jest równy 3. Więc byłoby to fałszywe.
Czyli 1 równa się 2 jest wykonywane jako pierwsze, wynik ponownie 0 fałsz.
Wtedy 0 nie jest równe 3, wykonuje, w wyniku czego 1 jest prawdą.
Powiedziałem więc na początku fałsz, ale oczywiście 0 nie jest równe 3, co w
całości dałoby się ocenić jako fałsz.
Całość wypadłaby jako prawda, przepraszam, ponieważ 0 nie jest równe 3.
Więc 0 nie równe 3 Mówiłem, że to fałsz, ponieważ nie są równe, ale to
oznacza, że w rzeczywistości jest oceniane jako prawda.
Tak całkiem fajnie. Oto nasza tabela, która zawiera
wszystkie zasady pierwszeństwa i asocjatywności i bardzo trudno jest to zapamiętać.
Więc znowu, co robisz, użyj nawiasów.
Ale oto stół. Najwyższy poziom pierwszeństwa znajduje się
na górze, więc operatory przyrostków mają najwyższy poziom preferencji.
A jeśli używasz któregokolwiek z tych w tym samym wyrażeniu, czytasz
od lewej do prawej.
Więc operatory przyrostków, rzeczy takie jak
nawiasy mają najwyższy priorytet.
Więc za każdym razem, gdy umieścisz coś w nawiasach, to zadziała.
Ale masz nawiasy, a następnie masz
operatory przyrostków. Nie rozmawialiśmy o
kilku rzeczach po wskaźnikach, czyli o tym myślniku większym niż,
ale wiemy teraz o plusie plus
minus minus, które są
postfiksami i mają najwyższy priorytet. Operatory jednoargumentowe takie jak plus minus,
wykrzyknik oznaczający not, tylda dla bitu, plus plus minus minus,
a następnie operator rzutowania jest określany jako operator jednoargumentowy, ponieważ ma tylko jeden operand.
A następnie operator gwiazdki jest operatorem wskaźnika. Znak ampersand to bitowy
i sizeof.
Te mają następny najwyższy priorytet.
Ale tutaj czytasz od prawej do lewej
do oceny, jeśli masz dwa w tej samej instrukcji stanu linii.
A potem znowu po prostu wchodzimy w zamówienia. Musisz znać ten porządek i zapamiętać go. To dość trudne, ale
chciałem ci to pokazać, po prostu chciałem
mieć małą ilustrację, aby pokazać niektóre tabele. Jest wielu operatorów.
Tak więc istnieje wiele poziomów obecności, a asocjatywność w większości, jak powiedzieliśmy wcześniej,
jest od lewej do prawej.
Masz tylko asocjatywność prawej lewej dla operatorów jednoargumentowych.
Tak więc operatory bitowe podążają w dół, wszystkie
od lewej do prawej. Warunkowe operatory trójskładnikowe od prawej do lewej.
Operatory przypisania są zawsze na dole. To zawsze jest oceniane jako ostatnie.
A jeśli są równe, inne tam oceniasz od prawej do lewej.
A następnie przecinek jest również nazywany operatorem. To jest od lewej do prawej.
Kolejna koncepcja, choć pierwszeństwo i skojarzenie, której
tak naprawdę nie będziemy omawiać
w tych innych przykładach. Skończymy na tym, że cały czas
będziemy używać nawiasów i właśnie to chcesz zrobić.
Ale znowu, jeśli chcesz w pełni zrozumieć język, chcesz zrozumieć te pojęcia, dlatego ci to mówię.
Nikt nie może twierdzić, że zna język, jeśli nie zna niektórych takich szczegółów.
Ale używaj nawiasów tak często, jak możesz. Dziękuję Ci.