Kezdőoldal » Számítástechnika » Programozás » C#. Mi értelme van || és &&...

C#. Mi értelme van || és && operátorok helyett | és & operátort használni?

Figyelt kérdés
Ha jól értem, az a különbség, hogy az egyik már akkor dönt, ha ez egyik feltétel alapján eldől az eredmény, így nem feltétlenül megy végig az összesen de akkor a másiknak mi értelme? Van olyan helyzet, amikor azt érdemes használni?

2015. júl. 15. 14:59
1 2
 1/11 anonim ***** válasza:

Az msdn sok okosságot tartalmaz

[link]

[link]

2015. júl. 15. 15:24
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:

logikai "és": &&

logikai "vagy": ||


bináris "és": & (boolnál sima logikai "és", integernél bitwise)

bináris "vagy" | (boolnál sima logikai "vagy", integernél bitwise)

2015. júl. 15. 15:29
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:
42%

Akkor van értelme ha a kiértékelendő kifejezéseknek valamilyen mellékhatása van, amit minden esetben szeretnénk ha lefutna.

Tipikus példa:

if (x++ > n || y++ > n)

2015. júl. 15. 18:11
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:

Utolsó:


Amúgy tényleg így van, de semmibe se kerül nem hákolni és leírni több sorba :D

2015. júl. 15. 19:25
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
62%
A nyelv lehetőségeinek kihasználása és a kódrövidítés nem "hákolás".
2015. júl. 15. 19:46
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
#3 köszi, ilyesmi példára voltam kiváncsi
2015. júl. 16. 20:03
 7/11 anonim ***** válasza:
De látom azért a youtuberól programozó vérpistikéknek sikerült lepontoznia... :)
2015. júl. 16. 20:58
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:

Youtuben is vannak jó videók. Ezt a példád amúgy nem értem:

if (x++ > n || y++ > n)

2015. júl. 16. 21:16
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:
90%

Mivel senki sem adott még rá értelmes választ, ezért elmagyarázom, mik is ezek.


Vegyük először az első kettőt.

bool X, Y;

bool OrResult = X || Y;

bool AndResult = X && Y;


Látható, hogy a || és a && operátorok logikai (bool típusú) eredményt képeznek. A || a logikai VAGY műveletet jelenti. OrResult akkor lesz true, ha X true, vagy Y true, vagy mindkettő true. Ha X és Y mindketten egyszerre false, akkor false lesz az eredmény.


A && a logikai ÉS műveletet jelenti. AndResult csak akkor lesz true, ha X és Y mindkettő egyszerre true. Ha legalább az egyik false, akkor AndResult is false lesz.


A másik két csoport már érdekesebb.

int X = 21, Y = 55;


Írjuk fel mindkettőt bináris számrendszerben:

X = 0001 0101

Y = 0011 0111


int BitwiseOrResult = X | Y;

A | operátor a bitenkénti VAGY műveletet hajtja végre. Ha a 0-t false-nak, az 1-est true-nak tekintjük, akkor ugyanazt kell eljátszani, mint a || operátornál, csak itt minden egyes bitre. Ha a két szám bináris alakját egymás alá írjuk fel, akkor két egymás alatt lévő bitre kell elvégezni a logikai VAGY műveletét.

0001 0101 (X)

0011 0111 (Y)

-- -- -- -- -- -- -

0011 0111 (BitwiseOrResult)

Ha az eredményt visszaírjuk tízes számrendszerbe, láthatjuk, hogy a BitwiseOrResult értéke 55 lett.


Hasonló a helyzet a & operátor esetében, csak ott bitenként a logikai ÉS műveletét végezzük el:

int BitwiseAndResult = X & Y;

0001 0101 (X)

0011 0111 (Y)

-- -- -- -- -- -- -

0001 0101 (BitwiseAndResult)

Ezt szintén tízes számrendszerbe visszaírva az eredmény 21 lesz.

2015. júl. 16. 22:19
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

Lillácska már megint csak az okoskodás megy...

Nem a bináris operátorokról volt szó, hanem a mohó kiértékelésű logikai operátorokról.

2015. júl. 16. 22:43
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!