MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Operații aritmetice în C#

În C#, se utilizează majoritatea operațiilor care sunt aplicate și în alte limbaje de programare. Operațiile reprezintă anumite acțiuni asupra operanzilor - participanții la operație. Un operand poate fi o variabilă sau o valoare (de exemplu, un număr). Operațiile pot fi unare (se efectuează asupra unui operand), binare - asupra a doi operanzi și ternare - se efectuează asupra a trei operanzi. Să analizăm toate tipurile de operații.

Operații aritmetice binare:

  • +

Operația de adunare a două numere:

int x = 10;
int z = x + 12; // 22
  • -

Operația de scădere a două numere:

int x = 10;
int z = x - 6; // 4
  • *

Operația de înmulțire a două numere:

int x = 10;
int z = x * 5; // 50
  • /

Operația de împărțire a două numere:

int x = 10;
int z = x / 5; // 2

double a = 10;
double b = 3;
double c = a / b; // 3.33333333

La împărțire, trebuie avut în vedere că, dacă ambii operanzi reprezintă numere întregi, rezultatul va fi de asemenea rotunjit la un număr întreg:

double z = 10 / 4; // rezultatul este 2

Chiar dacă rezultatul operației este plasat într-o variabilă de tip double, care permite păstrarea părții fracționare, în operație sunt implicați doi literali, care implicit sunt considerați obiecte de tip int, adică numere întregi, și rezultatul va fi de asemenea întreg.

Pentru a evita această situație, trebuie să definim literalii sau variabilele implicate în operație ca tipuri double sau float:

double z = 10.0 / 4.0; // rezultatul este 2.5
  • %

Operația de obținere a restului împărțirii a două numere întregi:

double x = 10.0;
double z = x % 4.0; // rezultatul este 2

Există, de asemenea, o serie de operații unare, în care participă un operand:

  • ++

Incrementarea poate fi prefixată: ++x - mai întâi valoarea variabilei x este mărită cu 1, apoi valoarea ei este returnată ca rezultat al operației.

Și există, de asemenea, incrementarea postfixată: x++ - mai întâi valoarea variabilei x este returnată ca rezultat al operației, apoi i se adaugă 1.

int x1 = 5;
int z1 = ++x1; // z1=6; x1=6
Console.WriteLine($"{x1} - {z1}");

int x2 = 5;
int z2 = x2++; // z2=5; x2=6
Console.WriteLine($"{x2} - {z2}");
  • --

Operația de decrementare sau de reducere a valorii cu unul. De asemenea, există forma prefixată de decrementare (--x) și cea postfixată (x--).

int x1 = 5;
int z1 = --x1; // z1=4; x1=4
Console.WriteLine($"{x1} - {z1}");

int x2 = 5;
int z2 = x2--; // z2=5; x2=4
Console.WriteLine($"{x2} - {z2}");

Prioritatea operațiilor

La efectuarea mai multor operații aritmetice simultan, trebuie să se țină cont de ordinea în care acestea sunt executate. Prioritatea operațiilor de la cea mai mare la cea mai mică este:

  • Incrementare, decrementare
  • Înmulțire, împărțire, obținerea restului
  • Adunare, scădere

Pentru a schimba ordinea operațiilor se folosesc parantezele.

Să analizăm un set de operații:

int a = 3;
int b = 5;
int c = 40;
int d = c---b*a;    // a=3  b=5  c=39  d=25
Console.WriteLine($"a={a}  b={b}  c={c}  d={d}");

Aici avem de-a face cu trei operații: decrementare, scădere și înmulțire. Mai întâi se execută decrementarea variabilei c, apoi înmulțirea b*a, și la final scăderea. Deci, în esență, setul de operații arată astfel:

int d = (c--)-(b*a);

Dar cu ajutorul parantezelor am putea schimba ordinea operațiilor, de exemplu, astfel:

int a = 3;
int b = 5;
int c = 40;
int d = (c-(--b))*a;    // a=3  b=4  c=40  d=108
Console.WriteLine($"a={a}  b={b}  c={c}  d={d}");

Asociația operatorilor

Așa cum am menționat mai sus, operațiile de înmulțire și împărțire au aceeași prioritate, dar care va fi rezultatul în expresia:

int x = 10 / 5 * 2;

Ar trebui să interpretăm această expresie ca (10 / 5) * 2 sau ca 10 / (5 * 2)? Pentru că, în funcție de interpretare, vom obține rezultate diferite.

Când operațiile au aceeași prioritate, ordinea de calcul este determinată de asociația operatorilor. În funcție de asociație, există două tipuri de operatori:

  • Operatori stânga-asociați, care sunt executați de la stânga la dreapta
  • Operatori dreapta-asociați, care sunt executați de la dreapta la stânga

Toți operatorii aritmetici sunt stânga-asociați, adică sunt executați de la stânga la dreapta. Prin urmare, expresia 10 / 5 * 2 trebuie interpretată ca (10 / 5) * 2, adică rezultatul va fi 4.

← Lecția anterioară Lecția următoare →