Nächste: Operatoren für Gleichungen, Vorige: Relationale Operatoren, Nach oben: Operatoren [Inhalt][Index]
Ist der logische Operator der Konjunktion. and
ist ein
N-ary-Operator. Die Operanden sind boolesche Ausdrücke und das Ergebnis ist
ein boolescher Wert.
Der Operator and
erzwingt die Auswertung aller oder einen Teil der
Operanden. Die Operanden werden in der Reihenfolge ausgewertet, in der sie
auftreten. and
wertet nur so viele Operanden aus, wie nötig sind, um
das Ergebnis des Ausdrucks zu bestimmen. Hat irgendein Argument den Wert
false
, ist das Ergebnis false
und die weiteren Argumente werden
nicht ausgewertet.
Die Optionsvariable prederror
kontrolliert das Verhalten von and
für den Fall, dass ein Operand nicht zu true
oder false
ausgewertet werden kann. and
gibt eine Fehlermeldung aus, wenn
prederror
den Wert true
hat. Andernfalls werden Operanden
akzeptiert, die nicht zu true
oder false
ausgewertet werden
können und das Ergebnis ist ein boolescher Ausdruck.
and
ist nicht kommutativ, da aufgrund von nicht ausgewerteten Operanden
die Ausdrücke a and b
und b and a
ein unterschiedliches Ergebnis
haben können.
Beispiele:
(%i1) n:2; (%o1) 2 (%i2) integerp(n) and evenp(n); (%o2) true (%i3) not(a=b) and 1=1 and integerp(2); (%o3) true (%i4) not(a=b) and 1=1 and oddp(2); (%o4) false (%i5) a and b; (%o5) a and b (%i6) prederror:true$ (%i7) a and b; Unable to evaluate predicate a -- an error. To debug this try: debugmode(true);
Da and
nur so viele Operanden auswertet wie notwendig sind, um das
Ergebnis festzustellen, führt der syntaktische Fehler im zweiten Operanden
nicht zu einer Fehlermeldung, das das Ergebnis bereits mit dem ersten
Operanden feststeht.
(%i8) a=b and sin(2,2); (%o8) false
Ist der logische Operator der Disjunktion. or
ist ein N-ary-Operator.
Die Operanden sind boolesche Ausdrücke und das Ergebnis ist ein boolescher
Wert.
Der Operator or
erzwingt die Auswertung aller oder einen Teil der
Operanden. Die Operanden werden in der Reihenfolge ausgewertet, in der sie
auftreten. or
wertet nur so viele Operanden aus wie nötig sind, um
das Ergebnis des Ausdrucks zu bestimmen. Hat irgendein Operand den Wert
true
, ist das Ergebnis true
und die weiteren Operanden werden
nicht ausgewertet.
Die Optionsvariable prederror
kontrolliert das Verhalten von or
für den Fall, dass ein Operand nicht zu true
oder false
ausgewertet werden kann. or
gibt eine Fehlermeldung, wenn
prederror
den Wert true
hat. Andernfalls werden Operanden
akzeptiert, die nicht zu true
oder false
ausgewertet werden
können und das Ergebnis ist ein boolescher Ausdruck.
or
ist nicht kommutativ, da aufgrund von nicht ausgewerteten Operanden
die Ausdrücke a or b
und b or a
ein unterschiedliches Ergebnis
haben können.
Beispiele:
(%i1) n:2; (%o1) 2 (%i2) oddp(n) or evenp(n); (%o2) true (%i3) a=b or not(1=1) or integerp(2); (%o3) true (%i4) a or b; (%o4) a or b (%i5) prederror:true$ (%i6) a or b; Unable to evaluate predicate a -- an error. To debug this try: debugmode(true);
Da or
nur so viele Operanden auswertet wie notwendig sind, um das
Ergebnis festzustellen, führt der syntaktische Fehler im zweiten Operanden
nicht zu einer Fehlermeldung, da das Ergebnis bereits mit dem ersten
Operanden feststeht.
(%i7) integerp(2) or sin(2,2); (%o7) true
Ist die logische Negation. not
ist ein Prefix-Operator. Der Operand
ist ein boolescher Ausdruck und das Ergebnis ein boolescher Wert.
Der Operator not
erzwingt die Auswertung des Operanden. Die
Optionsvariable prederror
kontrolliert das Verhalten von not
für
den Fall, dass der Operand nicht zu true
oder false
ausgewertet
werden kann. not
gibt eine Fehlermeldung, wenn prederror
den Wert
true
hat. Andernfalls wird ein Operand akzeptiert, der nicht zu
true
oder false
ausgewertet werden kann, und das Ergebnis ist ein
boolescher Ausdruck.
Beispiele:
(%i1) not integerp(2); (%o1) false (%i2) not (a=b); (%o2) true (%i3) not a; (%o3) not a (%i4) prederror:true$ (%i5) not a; Unable to evaluate predicate a -- an error. To debug this try: debugmode(true);
Nächste: Operatoren für Gleichungen, Vorige: Relationale Operatoren, Nach oben: Operatoren [Inhalt][Index]