• 4 odgovora
  • 3.629 pregleda
logički operatori 21.03.2009. u 09:48 · pre 214 meseci #1
evo nečeg zanimljivog pa ako itko zna zašto se ovo događa...

cout << false || true; // false!
cout << true || false; //true
Re: logički operatori 21.03.2009. u 14:21 · pre 214 meseci #2
Da bi bilo "true, true", pretpostavljam da su potrebne zagrade zbog prioriteta/grupisanja operatora << i ||
cout << (false || true); // true
cout << (true || false); //true


[Ovu poruku je menjao X Files dana 21.03.2009. u 15:34 GMT+1]
Re: logički operatori 24.03.2009. u 14:21 · pre 214 meseci #3
Da. To sam i ja vidio da je stvar u zagradama, ali mi je u najmanju ruku čudno da dobijem ovakvo što jer bi ipak on trebao evaluirati kompletan izraz prije ispisa rezultata.
Re: logički operatori 24.03.2009. u 14:47 · pre 214 meseci #4
http://www.cplusplus.com/doc/tutorial/operators.html

Izraz a << b || c se računa kao (a << b) || c
Nema veze što u tvom primeru << nije LeftShift, ima isti prioritet kao da jeste.

Citat:
So if you want to write complicated expressions and you are not completely sure of the precedence levels, always include parentheses. It will also become a code easier to read.
Re: logički operatori 24.03.2009. u 15:01 · pre 214 meseci #5
svi preklopljeni operatori , nezavisno od nacina preklapanja , zadrzavaju prioritet
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme