Pierwszeństwo operatora w C

Pierwszeństwo operatora w C

Kiedy oceniamy wszelkie wyrażenie, które obejmuje wykorzystanie różnych operatorów, jesteśmy zobowiązani do rozwiązania wyrażenia do obliczenia jego wartości na podstawie pierwszeństwa operatora. Pierwsze nastawienie jest terminem na przypisanie priorytetu lub wagi do jakiejś wartości/terminu, więc pierwszeństwo operatora przypisuje priorytet operatorom w wyrażeniu. Aby to zrozumieć, przyjąć dowolne wyrażenie, e.G., 8*3+2, a odpowiedź na to wyrażenie może spowodować dwie różne wartości, odpowiednio „26” i „40”. Wybędziemy jednak wynik wyrażenia jako „26”, ponieważ operator mnożenia „*” ma większe pierwszeństwo operatora w porównaniu z operatorem dodawania „+”, a tym samym wyrażenie obliczy mnożenie między 8 a 3 a Wynik zostanie następnie dodany z 2. Wielu operatorów w języku programowania C ma większy priorytet przed innymi operatorami.

Procedura

Pierwszeństwo operatora jest ważną koncepcją w metodach numerycznych do rozwiązywania wyrażenia. Potrzebujemy tego pierwszeństwa, aby rozwiązać wyrażenie. Jeśli nie będziemy przestrzegać żadnej reguły, nie będziemy wiedzieli, jaki operator rozwiąże się najpierw, i możemy uzyskać inną odpowiedź za każdym razem. Aby uniknąć tego zamieszania, standaryzowaliśmy priorytet dla operatorów, którzy informują, jakiego operatora musimy najpierw ocenić w dowolnym wyrażeniu. W tym artykule rozwiążemy różne przykłady z różnymi operatorami.

Przykład 01

W przykładzie wykonamy program w Compiller Visual Studio C, który obliczy wyrażenie numeryczne z udziałem niektórych operatorów numerycznych. Jeśli weźmiemy przykładowe wyrażenie jako:

6*5-4+2

Bez pierwszeństwa operatora mamy dwa sposoby rozwiązania tego wyrażenia. Jednym ze sposobów jest rozwiązanie tego wyrażenia poprzez ocenę operatorów od lewej do prawej. Jeśli to zrobimy, otrzymamy odpowiedź „28”. Innym sposobem rozwiązania wyrażenia jest to, że jeśli zaczniemy oceniać operatorów od prawej do lewej, obliczymy odpowiedź dla tego wyrażenia jako „26”. Odpowiedzi, które mamy, różnią się od siebie, a także są podejrzane. Jak byśmy wybrali, która odpowiedź jest poprawna, jeśli te odpowiedzi nie są złe? Rozwiążmy ten przykład w kompilatorze C, opracowując program tej operacji. Visual Studio C ma domyślne pierwszeństwo operatora dla takich wyrażeń.

Aby to zaimplementować, musimy utworzyć projekt, a następnie deklarować główną funkcję jako „main ()” z typem zwrotnym „liczbą całkowitą”. W głównej funkcji zainicjuj liczbę całkowitą o zmiennej nazwie „a” i przypisz do niej poprzednie wyrażenie numeryczne. Następnie wyświetl wynik tego wyrażenia w zmiennej, wywołując metodę printf (), która przyjmie specyfikator formatu dla zmiennej liczb całkowitych „A” jako „%i”, a także nazwa zmiennej „A” w jej argumentach. Oto najkrótszy program, który możesz wykonać:

#włączać
int main ()

int a = 6 * 5 - 4 + 2;
printf („%i”, a);
powrót 0;

Wyjście wyrażenia „A” zostanie następnie obliczone przez ten program jako „28”.

Przykład 02

Aby dowiedzieć się więcej o pierwszeństwie operatora, rozwiążemy przykład wyrażenia z udziałem operatorów arytmetycznych i operatorów wsporników i dowiemy się, w jaki sposób język programowania C daje pierwszeństwo wielu rodzajom operatorów. Wyrażenie, na którym będziemy pracować w tym przykładzie, jest następujące:

((3*8) +2) -2

Wyrażenie obejmuje dwa nawiasy operatorów i operatora arytmetycznego „+”. Aby sprawdzić, w jaki sposób kompilator C rozwiąże to wyrażenie, utwórz nowy projekt i zadeklaruje funkcję o nazwie „Main” z Integer „INT” jako jego typ powrotu. W tej funkcji zainicjuj zmienną „x” z liczbą całkowitą typu danych. Do tej zmiennej przypisz wyrażenie numeryczne, e.G., „Int x = ((3*8) +2) -2” i wyświetl zmienną w wyjściu.

#włączać
int main ()

int x = ((3 * 8) + 2) - 2;
printf („%i”, x);
powrót 0;

Dane wyjściowe dla zmiennej „x” zadeklarowanej w poprzednim przykładzie byłoby wartość liczbową „24”. Mamy takie dane wyjściowe, ponieważ język programowania C poprzedza operatora nawiasów w porównaniu z operatorem arytmetycznym „+”. Tak więc pierwszym operatorem ocenianym w wyrażeniu był operator nawiasów, który obejmował mnożenie dwóch wartości, 3 i 8, który nadał wartość 24. Następnie kompilator ponownie rozwiązał drugiego operatora nawiasy, który dodał wynikową wartość z pierwszego nawiasu o wartości numerycznej 2. Odpowiedź na drugi nawias to „26”. Potem nadeszła kolej na odejmowanie i „2” został odjęty od 26, co spowodowało odpowiedź wyrażenia jako 24.

Przykład 03

W trzecim przykładzie rozwiążemy wyrażenie z udziałem operatorów, które są takie same lub mają takie samo pierwszeństwo. W takim przypadku zaimplementujmy przykład, w którym zadeklarujemy trzy zmienne x, y i z, wszystkie mają ten sam typ danych jak liczba całkowita z zainicjowanymi wartościami jako 30, 20 i 10. Chcemy porównać wszystkie trzy wartości jako x> y> z. Jeśli warunek (x> y> z) staje się prawdą, wyjście wydrukuje „popraw”. W przeciwnym razie „fałszywy”. Ten przykład jest wdrażany w następujący sposób:

#włączać
int main ()

int x = 30;
int y = 20;
int Z = 10;
if (x> y> z)
printf („poprawne”);
w przeciwnym razie
printf („false”);
powrót 0;

Z poprzedniego kodu widzimy, że wyrażenie ma tylko operatorów komparatorów. W programie C, gdy ten sam typ operatora istnieje w wyrażeniu, po prostu obliczamy wyrażenie, oceniając operatora od lewej do prawej. To jest powód, dla którego wyjście wyświetliło „poprawne” dla wyrażenia. Jeśli poruszamy się od lewej do prawej i porównamy (x> y)> z, byłoby to poprawne stwierdzenie dla wartości x = 30, y = 20 = i z = 10.

Wniosek

Pierwsze nastawienie operatora jest podstawową zasadą przypisywania priorytetów operatorom podczas wyrażeń numerycznych w programach napisanych w C. W tym artykule podkreśla pierwszeństwo operatorów w stosunku do tych samych i różnych operatorów do celów oceny. Wdrożyliśmy trzy różne przykłady z trzema różnymi przypadkami obejmującymi pierwszeństwo operatora.