MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Operații de atribuire

Operațiile de atribuire stabilesc o valoare. În operațiile de atribuire sunt implicați doi operanzi, iar operandul din stânga poate reprezenta doar o expresie denumită modificabilă, de exemplu, o variabilă.

Ca și în multe alte limbaje de programare, în C# există operația de atribuire de bază =, care atribuie valoarea operandului din dreapta operandului din stânga:

int number = 23;

Aici, variabilei number i se atribuie numărul 23. Variabila number reprezintă operandul din stânga, căruia i se atribuie valoarea operandului din dreapta, adică numărul 23.

De asemenea, se poate efectua o atribuire multiplă pentru mai multe variabile simultan:

int a, b, c;
a = b = c = 34;

Este de menționat că operațiile de atribuire au o prioritate scăzută. Mai întâi va fi calculată valoarea operandului din dreapta și abia apoi această valoare va fi atribuită operandului din stânga. De exemplu:

int a, b, c;
a = b = c = 34 * 2 / 4; // 17

Mai întâi va fi calculată expresia 34 * 2 / 4, apoi valoarea obținută va fi atribuită variabilelor.

Pe lângă operația de atribuire de bază, în C# există și alte operații:

  • +=: atribuire după adunare. Atribuie operandului din stânga suma operanzilor din stânga și dreapta: expresia A += B este echivalentă cu A = A + B
  • -=: atribuire după scădere. Atribuie operandului din stânga diferența dintre operanzii din stânga și dreapta: A -= B este echivalentă cu A = A - B
  • *=: atribuire după înmulțire. Atribuie operandului din stânga produsul operanzilor din stânga și dreapta: A *= B este echivalentă cu A = A * B
  • /=: atribuire după împărțire. Atribuie operandului din stânga câtul împărțirii operandului din stânga la operandul din dreapta: A /= B este echivalentă cu A = A / B
  • %=: atribuire după împărțirea pe modul. Atribuie operandului din stânga restul împărțirii operandului din stânga la operandul din dreapta: A %= B este echivalentă cu A = A % B
  • &=: atribuire după AND pe biți. Atribuie operandului din stânga rezultatul operației AND pe biți între reprezentările binare ale operanzilor din stânga și dreapta: A &= B este echivalentă cu A = A & B
  • |=: atribuire după OR pe biți. Atribuie operandului din stânga rezultatul operației OR pe biți între reprezentările binare ale operanzilor din stânga și dreapta: A |= B este echivalentă cu A = A | B
  • ^=: atribuire după operația XOR. Atribuie operandului din stânga rezultatul operației XOR între reprezentările binare ale operanzilor din stânga și dreapta: A ^= B este echivalentă cu A = A ^ B
  • <<=: atribuire după deplasarea pe biți la stânga. Atribuie operandului din stânga rezultatul deplasării binare a operandului din stânga la stânga cu un număr de biți egal cu valoarea operandului din dreapta: A <<= B este echivalentă cu A = A << B
  • >>=: atribuire după deplasarea pe biți la dreapta. Atribuie operandului din stânga rezultatul deplasării binare a operandului din stânga la dreapta cu un număr de biți egal cu valoarea operandului din dreapta: A >>= B este echivalentă cu A = A >> B

Aplicarea operațiilor de atribuire:

int a = 10;
a += 10;        // 20
a -= 4;         // 16
a *= 2;         // 32
a /= 8;         // 4
a <<= 4;        // 64
a >>= 2;        // 16

Operațiile de atribuire sunt asociative la dreapta. Adică sunt efectuate de la dreapta la stânga. De exemplu:

int a = 8;
int b = 6;
int c = a += b -= 5;    // 9

În acest caz, evaluarea expresiei va fi astfel:

1. b -= 5 (6 - 5 = 1)
2. a += (b -= 5) (8 + 1 = 9)
3. c = (a += (b -= 5)) (c = 9)
← Lecția anterioară Lecția următoare →