Logikai érték előállítása
Logikai értékeket leggyakrabban elágazások és
ciklusok feltételének adunk meg, de egy logikai típusú változóban is
tárolható az ilyen kifejezések értéke (ami "igaz" vagy "hamis").
A legtöbb nyelv a true és false konstans kifejezéseket használja a logikai "igaz" és "hamis" jelölésére.
Cifrább a helyzet a lazán típusos (például C) nyelveknél, ahol egy
számérték (például int) is értelmezhető logikai értékként. A C nyelvben a
0 számérték a "hamis" és minden nemnulla érték "igaz".
Összehasonlító operátorok
művelet |
pascal |
java |
C/C++/C# |
egyenlőség vizsgálat |
a=b |
a==b |
a==b |
nemegyenlőség vizsgálat |
a<>b |
a!=b |
a!=b |
kisebb |
a<b |
a<b |
a<b |
nagyobb |
a>b |
a>b |
a>b |
kisebb vagy egyenlő |
a<=b |
a<=b |
a<=b |
nagyobb vagy egyenlő |
a>=b |
a>=b |
a>=b |
Összetett feltételek
Ha több feltételből szeretnénk összetett logikai feltételt felépíteni, a
klasszikus logika alapműveleteit ("ÉS", "VAGY", "NEM") használhatjuk.
Sajnos a pascal nyelv tervezési hibája miatt pascal-ban erőteljesen
zárójelezni kell az összetett feltételeket.
művelet |
pascal |
java |
C# |
"ÉS" |
AND |
&& |
&& |
"VAGY" |
OR |
|| |
|| |
"NEM" |
NOT |
! |
! |
zárójelezés példa |
(a>0) AND (a<10) |
a>0 && a<10 |
a>0 && a<10 |
Példák
Pascal
if (a <> 0) AND (b*b>=4*a*c) then x1 := (-b+sqrt(b*b-4*a*c))/(2*a);
Java
if( a!=0 && b*b>=4*a*c) x1 = (-b+Math.sqrt(b*b-4*a*c))/(2*a);
Bitműveletek
művelet |
pascal |
java |
C/C++/C# |
bitenkénti és |
AND |
& |
& |
bitenkénti vagy |
OR |
| |
| |
bitenkénti kizáró vagy |
XOR |
^ |
^ |
bitenkénti nem | NOT |
~ |
~ |
léptetés jobbra |
SHR |
>> |
>> |
léptetés jobbra előjel nélkül | | >>> | |
léptetés balra |
SHL |
<< |
<< |
AlkalmazásokBitenkénti és : információ kinyerése ("kimaszkolása") bitsorozatból Bitenkénti vagy : információ hozzáadása bitsorozathoz Bitenkénti kizáró vagy : gyenge titkosítás, értékek cseréje Bitenkénti nem : bitsorozat gyors előállítása Léptetés balra : szorzás kettő-hatvánnyal Léptetés jobbra : osztás kettő-hatvánnyal Példák |