При упознавању са наредбом доделе важно је објаснити доделу облика x = x + 1; која може да буде збуњујућа због сличности са математичком једначином која нема решења.
Из тог разлога је потребно указати на разлику између знака једнакости који се користи у саставу наредбе доделе вредности (" = ") и знака једнакости који се користи за означавање релације "једнако" (" == ").
У C# наредба x = x + 1; представља једну наредбу доделе јер се променљивој x додељује њена вредност увећана за 1 и то је сада нова вредност променљиве x.
Знак једнакости који учествује у овој наредби " = " називамо оператором доделе. To je oператор најнижег приоритета, a aсоцијативност je здесна налево.
Општа синтакса наредбе доделе:
< променљива > = < израз >
На левој страни је име променљиве којој се додељује вредност, а на десној страни је конкретна вредност, израз или функција чија се вредност додељује променљивој.
Променљива и вредност се морају слагати по типу.
Наредба доделе се извршава у два корака:
прво се одређује вредност израза са десне стране оператора доделе
израчуната вредност се додељује променљивој са леве стране оператора доделе, односно, добијена вредност се уписује у меморијску локацију која је резервисана за чување те променљиве
Напомена: Свака наредба доделе вредности променљивој поништава њен претходни садржај јер променљива може чувати само једну вредност.
Примери наредбе доделе:
x = 5;
x = x + 2;
a = b * 3 + 78;
p = (a > 5) && (a < 20);
s ="Ja se zovem " + ime + " " + prezime;
Приметимо да се у другом примеру променљива x појављује, како у изразу са десне стране, тако и на месту променљиве којој се додељује вредност.
где је < променљива > на левој и десној страни иста, а < оп > један од оператора +, -, *, / или % , називамо сложеном наредбом доделе.
Можемо је записати коришћењем сложених оператора доделе
<оп>=
на следећи начин:
< променљива > < оп > = < израза >
Примери сложене наредбе доделе:
x *= 5; што је еквивалентно са x = x * 5;
a -= 2 + y; што је еквивалентно са a = a - (2 + y);
x += 3 - (y - 6) + 5; што је еквивалентно са x = x + 3 * (y - 6) + 5;
a /= b + c; што је еквивалентно са a = a / (b + c);
Пример 1. Напиши наредбу која променљивој:
a) x додељује вредност -77.7
b) n додељује збир вредности променљиве n и броја 5
c) s додељује аритметичку средину реалних бројева a,b и c
d) c додељује дужину хипотенузе правоуглог троугла на основу дужина катета a и b
e) r додељује дужину растојања између тачака са координатама (x1 ,y1 ) и (x2 ,y2 )
a) x = -77.7; b) n = n + 5; c) s = (a + b + c) / 3; d) c = sqrt( sqr(a) + sqr(b) ); e) r = sqrt( sqr(x1 - x2 ) + sqr (y1 - y2 ));
Пример 2. Шта ће бити вредност променљивих након извршења следећих наредби:
//Deklarisanje i inicijalizacija vrednosti promenljive a
int a = 4;
//Deklarisanje i inicijalizacija vrednosti promenljive b
int b = 7;
//Promenljivoj a dodeljujemo vrednost izraza na desnoj strani
a = 2 * a - b;
//Promenljivoj b dodeljujemo vrednost izraza na desnoj strani
b = 7 * a - b;
//Promenljivoj a dodeljujemo vrednost izraza na desnoj strani
a = a - a;
Из наредбе a = 2 * a - b; добијамо да је а = 2 * 4 - 7 = 1.
Из наредбе b = 7 * a - b; добијамо да је b = 7 * 1 - 7 = 0.
Из последње наредбе a = a - a; добијамо да је и а = 0. Након извршења ових наредби, вредност обе променљиве ће бити 0, дакле, a = 0, b = 0.