Dacă vă mai amintiți încă de matematica de la școală (da, cum să nu! 😀 ), unii operatori au precedență față de alții, adică au o importanță mai mare; spre exemplu, înmulțirea este mai importantă decât adunarea și va fi calculată mai întâi. Trebuie să țineți cont de precedența operatorilor de fiecare dată când veți efectua operații cu mai mult de doi operanzi.
Ca și în matematică, puteți forța schimbarea precedenței operatorilor prin utilizarea parantezelor. Să considerăm următorul exemplu:
1 |
media = 5 + 10 + 15 / 3; |
Dacă media ar fi calculată, rezultatul ar trebui să fie 10. Dar dacă lăsați C# să evalueze această expresie, rezultatul va fi 20, deoarece:
1 2 3 4 |
media = 5 + 10 + 15 / 3; = 5 + 10 + 5; = 15 + 5; = 20; |
Acest lucru se întâmplă deoarece împărțirea are o prioritate mai mare decât adunarea, și e calculată mai întâi. Pentru a putea calcula corect valoarea medie, trebuie să „forțați” o altă ordine a operațiilor:
1 2 3 4 |
media = (5 + 10 + 15) / 3; = (15 + 15) / 3; = (30) / 3; = 10; |
Motivul pentru care exemplul de mai sus functionează se datorează faptului că în C#, parantezele () au o prioritate a operatorilor mai mare decât oricare alt operator. Așa că, prin utilizarea lor, am forțat compilatorul să evalueze mai întâi expresia în interiorul parantezelor, iar mai apoi să efectueze împărțirea.
Iată un tabel care prezintă precedența operatorilor în C#, de la cea mai mare spre cea mai mică prioritate:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
(,) ++, -- (ca postfix), new, (type), typeof, sizeof ++, -- (ca prefix), +, - (unary), !, ~ *, /, % + (concatenare string) +, - <<, >> <, >, <=, >=, is, as ==, != &, ^, | && || ?:, ?? =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= |
Ca regulă generală, ar trebui să folosiți paranteze ori de câte ori expresia ar fi ambiguă:
1 2 3 4 5 |
// Ambiguu x + y / 2 // Metoda recomandată, mai clară x + (y / 2) |
Conceptele explicate în această lecție sunt prezentate și vizual, ca parte a următorului videoclip:
Tags: operatori, precedența operatorilor