AND, OR, XOR
Verfasst: 10.12.2008 18:30
Weil sich schon viele User unsicher waren, wie die logischen Verknüpfungen
AND, OR und XOR von PureBasic verarbeitet werden, werde ich mal hier
alles in diesem Thread klar machen.
Wir nehmen mal an, dass der Ausdurck vor der Verknüpfung "L" heißt und
der nach der Verknüpfung "R".
In diesem Ausdruck, wird L (also "X()") immer ausgeführt. Ist L nicht
wahr, dann wird R erst garnicht begonnen. D.h. die Funktion Y() wird nicht
aufgerufen, wenn X() "0" zurückgibt.
Wenn L wahr ist, dann wird R nicht ausgeführt.
Bei XOR werden immer L und R ausgeführt und ausgewertet. Es wird
also nie ein Ausdruck ausgelassen.
Wenn man über das alles bescheid weiß, kann man folgedes machen:
Man ist sich bewusst, dass "*Pointer\L" zu einem Fehler führen kann,
wenn "*Pointer" auf Null zeigt. Doch wenn *Pointer gleich 0 ist, dann
wird der zweite Ausdruck ("*Pointer\L=10") nach dem AND erst garnicht
ausgeführt. Und so kommt es dann auch nicht zu einem Fehler.
Ich hoffe ich konnte euch damit helfen.
Gruß Josef
AND, OR und XOR von PureBasic verarbeitet werden, werde ich mal hier
alles in diesem Thread klar machen.
Wir nehmen mal an, dass der Ausdurck vor der Verknüpfung "L" heißt und
der nach der Verknüpfung "R".
Code: Alles auswählen
If X() and Y()
wahr, dann wird R erst garnicht begonnen. D.h. die Funktion Y() wird nicht
aufgerufen, wenn X() "0" zurückgibt.
Code: Alles auswählen
If X() Or Y()
Code: Alles auswählen
If X() XOr Y()
also nie ein Ausdruck ausgelassen.
Wenn man über das alles bescheid weiß, kann man folgedes machen:
Code: Alles auswählen
If *Pointer And *Pointer\L=10
...
wenn "*Pointer" auf Null zeigt. Doch wenn *Pointer gleich 0 ist, dann
wird der zweite Ausdruck ("*Pointer\L=10") nach dem AND erst garnicht
ausgeführt. Und so kommt es dann auch nicht zu einem Fehler.
Ich hoffe ich konnte euch damit helfen.
Gruß Josef