[ Karo @ 29.01.2020. 11:50 ] @
int main()
{
int a=30, b=10, c=30 ;


a -= b <50;//29
c = c - b <50;//1
//c = a < 50;
//a -= (b < 50) ? 1 : 0;

cout << a << endl;
cout << c << endl;

}

zar nebi trebalo da je isiti rezultat po definiciji?
[ djoka_l @ 29.01.2020. 13:34 ] @
Po kojoj definiciji?

a -= b < 50

računa se prvo vrednost izraza (b < 50), a vrednost je 1
onda se računa a -= 1 i dobija se 29

Dakle prvo se radi izraz sa desne strane, onda se vrednost izraza oduzme od a

U drugom slučaju, računa se vrednost izraza
c - b <50

kako je "-" većeg prioriteta od "<" računa se prvo (c-b) i dobije se 20
onda se računa 20<50, što je tačno i dobije se 1

Ovo što ti pitaš spada u kategoriju UŽASNOG programiranja.
Ako imaš nedoumicu kojim redosledom će se obaviti operacije KORISTI ZAGRADE...

Takođe je odvratno da koristiš rezultat LOGIČKE operacije kao int.
[ Branimir Maksimovic @ 29.01.2020. 15:09 ] @
Ma dobro kad mogu tako da se miksuju logicki i aritmericki izrazi ;)
Stvar je znati precedence koji nikad nije bolje ostaviti da posmatrac pogadja,
kao sto si rekao u ovakvim slucajevima su zagrade must ;)
[ Karo @ 29.01.2020. 20:02 ] @
Po definiciji cppreference je:

code
a -= b

matematički
a - b

Ocekivano je bilo da se evaluira isto?

Citat:

U drugom slučaju, računa se vrednost izraza
c - b <50

kako je "-" većeg prioriteta od "<" računa se prvo (c-b) i dobije se 20
onda se računa 20<50, što je tačno i dobije se 1


jasno je da je "-" većeg prioriteta od "<"

Citat:

računa se prvo vrednost izraza (b < 50), a vrednost je 1
onda se računa a -= 1 i dobija se 29

Dakle prvo se radi izraz sa desne strane, onda se vrednost izraza oduzme od a


to je bilo PITANJE, zasto ima veci prioritet "b < 50" u odnosu na "a -=" ako se uzme da je "a-=" samo precica za istu radnju, isto kao sto se zna za "-" ima veci proritet od "<"

Citat:

Ovo što ti pitaš spada u kategoriju UŽASNOG programiranja.
Ako imaš nedoumicu kojim redosledom će se obaviti operacije KORISTI ZAGRADE...

Takođe je odvratno da koristiš rezultat LOGIČKE operacije kao int.


takodje je LOGIČNO ODVRATNO da prozivas ljude za UŽASAN kod koji je uzet iz konteksta i uproščen zarad jednostavnosti pitanja (koji je mogao biti i generički)





[ djoka_l @ 29.01.2020. 20:42 ] @
Ne pričaj gluposti, kada kažeš "po definiciji", DAJ DEFINICIJU.

https://en.cppreference.com/w/c/language/operator_precedence

Kao što se vidi, operator "-=" je u grupi koja ima najmanji prioritet (samo zarez ima niži).

Dakle, -= se računa POSLEDNJE.
[ Karo @ 30.01.2020. 19:38 ] @
Citat:
Ne pričaj gluposti, kada kažeš "po definiciji", DAJ DEFINICIJU.


Ako x=x-y u matematici nije definicija, reci STAJE?

Citat:
https://en.cppreference.com/w/c/language/operator_precedence

Kao što se vidi, operator "-=" je u grupi koja ima najmanji prioritet (samo zarez ima niži).

Dakle, -= se računa POSLEDNJE.


TNX