Вредност израза као l-вредност

Поред оператора за посредни приступ (*) и индексирање ([]) у језику C++ још неколико оператора даје резултат l-вредност. Израз l-вредност користи се за вредности које означавају податке у меморији рачунара. Скраћеница је од „лева вредност“, а односи се на нешто што може да се налази на левој страни оператора за доделу вредности.

Резултат префиксног облика оператора ++ и – је l-вредност и представља податак који је наведен као операнд, са измењеним садржајем. Резултат постфиксног облика тих оператора није l-вредност.

++ ++k // ++(++k) – k se povecava za 2
k++ ++ // greska: (k++)++, a k++ nije l-vrednost
(--k)*=5 // k=(k-1)*5

Резултат сваког оператора за доделу вредности (=,+=,-=,*=,/=,%=,&=,!=,^=,<<= и >>=) је l-вредност и представља податак који је наведен као први операнд, са измењеним садржајем.

(d*=e)+=f // d=d*e, d=d+f → d=(d*e)+f → e se ne menja
d*=e+=f // d*=(e+=f) → e=e+f, d=d*e → menja se i e
(x=y)=5 // x=y, x=5 → y se ne menja
x=y=5 // x=(y=5) → y=5, x=5 → menja se i y
++(p/=q) // p=p/q, p=p+1 → p=p/q+1
++p/=q // (++p)/=q → p=p+1, p=p/q → p=(p+1)/q

Вредност условног израза (?:) у језику C++ је l-вредност ако и само ако су други и трећи операнд међусобно једнаких типова и ако су оба l-вредности. То омогућава да се, на пример, условним изразом одабере податак коме ће бити додељена дата вредност. Вредност условног израза у језику C никада није l-вредност.

long x=5;
int a,b;
x?a:b=1; // x ? a=1 :=1
x?x:b=1; // greska: x i b nisu istog tipa
x?2:b=1; // greska: 2 nije l-vrednost

One thought on “Вредност израза као l-вредност

  1. Повратни пинг: Основне разлике програмских језика С и С++ у процедуралном погледу – Рачунари и програмирање

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се /  Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се /  Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се /  Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се /  Промени )

Повезивање са %s