Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# Operator Prioriteit en Associativiteit Onder de Loep: Een Praktische Gids

C# Operator Prioriteit en Associativiteit Onder de Loep

Deze uitgebreide tutorial legt uit hoe de C# compiler expressies evalueert door de regels voor operator prioriteit en associativiteit toe te passen. Leer met duidelijke voorbeelden en referentietabellen.

Operator Prioriteit in C#

Operator prioriteit definieert de volgorde waarin delen van een expressie worden geëvalueerd. Elke C# operator heeft een vast prioriteitsniveau, wat ervoor zorgt dat de compiler expressies consistent verwerkt.

De vermenigvuldigingsoperator * heeft bijvoorbeeld een hogere prioriteit dan de opteloperator +. In de expressie

int x = 4 + 3 * 5;
vindt de vermenigvuldiging dus eerst plaats, wat resulteert in x = 19.

Als optellen voorrang zou hebben op vermenigvuldigen, zou het resultaat 35 zijn — maar C# volgt de vaste prioriteitshiërarchie.


Operator Prioriteitstabel

De onderstaande tabel lijst operators van hoogste naar laagste prioriteit.

++, --
C# Operator Prioriteit
CategorieOperators
Postfix Increment en Decrement
Prefix Increment, Decrement en Unaire++, --, +, -, !, ~
Multiplicatief*, /, %
Additief+, -
Shift<<, >>
Relationeel<, <=, >, >=
Gelijkheid==, !=
Bitwise AND&
Bitwise XOR^
Bitwise OR|
Logische AND&&
Logische OR||
Ternair? :
Toewijzing=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

Toewijzingen hebben de laagste prioriteit, terwijl postfix increment/decrement bovenaan staan.


Voorbeeld 1: Operator Prioriteit

using System;
namespace OperatorDemo {
    class OperatorPrecedence {
        public static void Main(string[] args) {
            int result1;
            int a = 5, b = 6, c = 4;
            result1 = --a * b - ++c;
            Console.WriteLine(result1);
            bool result2;
            result2 = b >= c + a;
            Console.WriteLine(result2);
        }
    }
}

Het uitvoeren van dit programma print:

19 False

Evaluatiestappen:

  • (--a) → 4 (a wordt 4)
  • (++c) → 5 (c wordt 5)
  • (a * b) → 24
  • Aftrekken: 24 - 5 = 19

De tweede expressie toont dat optellen + een hogere prioriteit heeft dan vergelijking >=, dus c + a wordt geëvalueerd voordat de vergelijking plaatsvindt.


Associativiteit van Operators in C#

Wanneer twee operators dezelfde prioriteit delen, gebruikt de compiler associativiteit om de evaluatievolgorde te bepalen. De meeste C# operators zijn linkslinks, maar een paar zijn rechts-links.

Voorbeeld:

int a = 5, b = 6, c = 3;
int result = a * b / c;

Omdat * en / linkslinks zijn, wordt de vermenigvuldiging eerst uitgevoerd, wat 10 oplevert.

Rechts-links associativiteit is cruciaal in toewijzingsketens:

int a = 5, b = 6, c = 3;
a = b = c;

De waarde 3 wordt toegewezen aan b, daarna b aan a, waardoor alle variabelen 3 bevatten.

De onderstaande tabel vat de C# operator associativiteit samen.

C# Operator Associativiteit
CategorieOperatorsAssociativiteit
Postfix Increment en Decrement++, --Links naar Rechts
Prefix Increment, Decrement en Unaire++, --, +, -, !, ~Rechts naar Links
Multiplicatief*, /, %Links naar Rechts
Additief+, -Links naar Rechts
Shift<<, >>Links naar Rechts
Relationeel<, <=, >, >=Links naar Rechts
Gelijkheid==, !=Links naar Rechts
Bitwise AND&Links naar Rechts
Bitwise XOR^Links naar Rechts
Bitwise OR|Links naar Rechts
Logische AND&&Links naar Rechts
Logische OR||Links naar Rechts
Ternair? :Rechts naar Links
Toewijzing=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=Rechts naar Links

Belangrijke rechts-links operators zijn unaire prefixes, de ternaire operator en alle toewijzingen.


Voorbeeld 2: Associativiteit in Actie

using System;
namespace OperatorDemo {
    class OperatorAssociativity {
        public static void Main(string[] args) {
            int a = 5, b = 6, c = 3;
            int result = a * b / c;
            Console.WriteLine(result);
            a = b = c;
            Console.WriteLine($"a = {a}, b = {b}, c = {c}");
        }
    }
}

De output is:

10
a = 3, b = 3, c = 3

C Taal

  1. C# Keywords en Identifiers begrijpen: Regels, lijsten en best practices
  2. C# Operators – Uitgebreide gids voor operators in C#
  3. De C# Ternaire Operator: Beknopte Gids voor Conditionele Expressies
  4. C# Classes & Objects: Fundamenten voor Robuuste OOP
  5. C# Abstract Classes & Methods: Een Praktische Gids
  6. C# Partial Classes en Methods: Een Praktische Gids
  7. C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
  8. C++ Operators Uitgelegd: Typen, Voorbeelden en Voorbeeldprogramma's
  9. C-constanten en literals: Types, gebruik en best practices
  10. Invoer en uitvoer in C programmeren: Volledige gids
  11. Uitgebreide Gids voor Datum en Tijd in C++