(JAVA) Kicsi segítség kellene a & és | jelentésével kapcsolatban?
A | akkor ad igazat, ha legalább az egyik vagy mindkét oldal igaz értéket ad vissza.
A & pedig csak akkor ad igazat, ha mindkét oldal igaz. Ha az & bal oldala hamis, akkor már a jobb oldal nem értékelődik ki.
Nem teljesen értem a problémádat ha jól sejtem, akkor logikai operátorok működésére vagy kíváncsi:
|| a logikai VAGY. Ha az egyik feltétel igaz, akkor igaz:
igaz || igaz = igaz
igaz || hamis = igaz
hamis || igaz = igaz
hamis || hamis = hamis
&& a logikai ÉS. Ha mindkét feltétel igaz, akkor igaz:
igaz && igaz = igaz
igaz && hamis = hamis
hamis && igaz = hamis
hamis && hamis = hamis
Az operátorokat leírták előttem, de a kérdés második felére nem jött válasz.
Ahogy én értelmezem a kérdésed az, hogy miért kell & ha van &&, azaz mire jó kiértékelni a jobb oldalt, vagy a | operátornál ha igaz a bal oldal miért van értelme kiértékelni a másik oldalt.
Akkor van ennek értelme, ha a jobb oldal kiértékelése egy esetleges hibát dobna. mivel nem Java-s vagyok itt egy C#-os példa:
if(x || int.Parse(type) == 3) {...}
Itt ha x bool változó és true az értéke, akkor ugye a feltétel igaz, tehát nem értékeli ki a másik oldalt és bemegy az ifbe. Ha viszont a |-ot használjuk, akkor a program kiértékeli a jobb oldalt, és ha a type nem parseolható inté azaz mondjuk szöveg van benne, akkor bizony a program hibát dob.
Ha mindez mondjuk egy try-catch blokkban van, máris beugrik a catch részbe és lehet hibát kezelni, mígy az első esetben nem.
"if(x || int.Parse(type) == 3) {...}
Itt ha x bool változó és true az értéke"
Ez úgy is simán megoldható, ha lusta vagyot használ az ember és megfordítja a feltételeket.
Igazából a lusta logikai operátorok biztonságosabbak, hogy miért van szükség mohóra is... Gondolom mert van olyan szemlélet is, ne maradjon ki a nyelvből.
A sok baromság után, amit az utolsó mond, ez az értelme, a mellékhatások.
Igazából ezek bitenkénti operátorok, tehát kiértékelik mindkét oldalukat, és utána végeznek el egy bitműveletet. Amiből aztán jöhet egy logikai érték, ha azt kívánja a környezet.
"Amiből aztán jöhet egy logikai érték, ha azt kívánja a környezet."
Éppen te vagy az aki itt baromságot beszél. Javaban ezek az operátorok teljesen külön kezelik az aritmetikai és a logikai operandusokat. Két aritmetikai érték eredménye egy aritmetikai érték, ugyanígy két logikai érték eredménye egy logikai érték. Bármilyen egyéb kombináció szemantikai hibát eredményez, és a C/C++ nyelvektől eltérően a két típus közt konverzió sincs.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!