Seite 2 von 3
Verfasst: 01.11.2006 18:51
von jear
... oder 11
Code: Alles auswählen
Macro sig(X)
(X>0)-(X<0)
EndMacro
Debug sig(-12.5)
Debug sig(-1234567890123456789)
Debug sig(-7)
Debug sig(-1)
Debug sig(0)
Debug sig(1)
Debug sig(7)
Debug sig(1234567890123456789)
Debug sig(12.5)
Hat aber schon einen sehr langen Bart...
Verfasst: 01.11.2006 18:52
von Kaeru Gaman
nuja, für manches ist es halt unverzichtbar, und mit "0 Or" bin ich bisher gut gefahren.
ist nur die abkürzung von "#False Or", bzw "#True And".
für procs braucht man das nicht wirklich, da lässt es sich meistens besser über Ifs lösen.
aber für Macros, die einen WERT ergeben sollen, ist es unverzichtbar,
da man dort keine mehreren codezeilen mit bedingungen einbaun kann.
ich könnte mir vorstellen, dass es Fred schwerfällt das zu implementieren,
weil er eventuell irgendwo ganz tief unten in der struktur von PB etwas so angelegt hat,
dass es eben nicht selbstverständlich funktioniert.
....und da nicht viele diese funktionalität wünschen,
man im englischen forum für solch eine anfrage sogar verspottet wird,
wird es bestimmt nicht sehr weit oben in Freds Prioritätenliste stehen.
Verfasst: 01.11.2006 19:14
von Little John
jear hat geschrieben:... oder 11
Meine Version hat noch Klammern außenrum:
... sonst kommt z.B. bei
was anderes raus als erwartet.
jear hat geschrieben:Hat aber schon einen sehr langen Bart...
Jup. Ich find's aber trotzdem toll, dass AND51 das (fast) allein herausgefunden hat.
Gruß, Little John
Verfasst: 01.11.2006 19:20
von Kaeru Gaman
yup genau...
aber wie gesagt, nochmal der hinweis:
reine Boole'sche Ausdrücke mit Variablen funktionieren nur in sonderfällen,
und auch der Bool-Typecast ist mit vorsicht zu genießen.
solange es keine offizielle benachrichtigung gibt,
dass Boole'sche Ausdrücke komplett implementiert sind,
sollte man vielleicht nur dort darauf zurückgreifen, wo es unumgänglich ist,
und dann mit einem Typecast, und auch das so oft wie vertretbar gegentesten.
Verfasst: 01.11.2006 19:54
von Little John
2Kaeru Gaman:
Alles klar, danke.
Gruß, Little John
Verfasst: 07.11.2006 21:59
von AND51
Kaeru Gaman hat geschrieben:dass ein einziges ~~ das erledigt, wär mal ne ganz neue feature.
PS:
das Not Not mag diese funktion ausüben, so wie auch das And 1
aber ~ ist nunmal bitwise und nicht boolean.
Mir ist mittlerweile eine passende Antwort darauf eingefallen:
Die bitweisen Operatoren ~~ (entspricht Not Not), drehen bei mir nur einen boole'schen Ausdruck um.
Binärzahlen werden in Purebasic ja so notiert:
True wäre also %1, False natürlich %0. Egal, ob ich True, was den Wert 'eins' hat, als Hex, Binär oder Integer notiere, es kommt immer nur ein zeichen dabei heraus, nämlich "1". Genau das gleiche mit "0". Das bitweise dreht einfach alles um. Alle nullen werdn zu einsen und umgekehrt, die PB Hilfe beweise es:
Beispiel:
; Zeigt die Benutzung mit Binär-Zahlen, da es so leichter ist, das Ergebnis zu sehen
a.w = ~%1000 ; Ergebnis wird %0111 sein
b.w = ~%1010 ; Ergebnis wird %0101 sein
Wie gesagt, die Boole'schen Ausdrücke, mit denen ich ja weiterrechne sind immer 0 oder 1, werden dann 2 mal ge-Not-ted um dann damit weiterzurechnen.
Somit ist diese Prozedur also völlig sicher und es kann nichts schlimmes passieren. Ich schreibe diesen Post, weil ich Recht haben will
und weil du folgendes geschrieben hast, Kaeru Gaman:
Kaeru Gaman hat geschrieben:es kann sein, dass es [nur] zufälliger weise funktioniert
Verfasst: 07.11.2006 22:13
von Hellhound66
Das ~~ ist totaler Käse, da
~ und ~ kumulativ sind und sich gegenseitig aufheben, ob die jetzt da sind oder nicht macht gar keinen Unterschied.
Beispiel:
Und um damit irgendwas zu einem boolschen Ausdruck umzuwandeln, ist auch blödsinn.
Verfasst: 07.11.2006 22:57
von Little John
Der Ausdruck
hat mit Bit-Operationen nichts zu tun.
Gruß, Little John
Verfasst: 07.11.2006 23:05
von Hellhound66
Hat auch keiner behauptet..
Verfasst: 07.11.2006 23:19
von Little John
Hellhound66 hat geschrieben:Hat auch keiner behauptet..
Dann frage ich mich, warum AND51 in diesem Thread dauernd von Bit-Operationen schreibt, und als "Lösung" seiner selbst gestellten Aufgabe schreibt:
Gruß, Little John