Hallo,
1 | if(HTTP_req.indexOf("Var") > -1) |
was bedeutet dieses-1 dass kann doch nur eine Inv sein, als wenn True rauskommt false und umgekehrt oder.
|
Forum: Mikrocontroller und Digitale Elektronik Ist >-1 in Der Arduino Sprache eine Investierung?Hallo,
was bedeutet dieses-1 dass kann doch nur eine Inv sein, als wenn True rauskommt false und umgekehrt oder. Mit den kargen Informationen wuerde ich sagen: indexOf gibt die Position der uebergebenen Zeichenkette zurueck. Wird die Zeichenkette nicht gefunden, gibt die Funktion -1 als Rueckgabewert. Es wird also nur ueberprueft, ob "Var" irgendwo drin vorhanden ist. Jan R. schrieb: > Ist >-1 in Der Arduino Sprache eine Investierung? Also, ich investiere aktuell in Sachwerte und einen IMHO gut verteilten Fonds. Keine Ahnung, wie man das in Arduino beschreibt. Jan R. schrieb: > if(HTTP_req.indexOf("Var") > -1) > was bedeutet dieses-1 Naja, steht doch da: Wenn HTTP.xxx größer als minus Eins ist, dann ... > dass kann doch nur eine Inv sein, als wenn True > rauskommt false und umgekehrt oder. Sorry, aber Du brauchst dringend ein gutes C-Buch. Kaufe Dir schnellstmöglich das hier regelmäßig empfohlene K&R. Wenn Dein Compiler nicht die Fassung verliert, ist:
>>if(HTTP_req.indexOf("Var") > -1)
eine 08/15 Abfrage. Wobei:
HTTP_req.indexOf("Var")
eine Integer Zahl liefert, was auch immer das sein soll und diese wird
mit:
-1
verglichen. --- Also ganz normales C.
In solchen Fällen empfiehlt es sich, ganz einfach in der Doku der Klasse nachzusehen, von der HTTP_req ein Objekt ist, was in der Beschreibung der Methode indexOf steht, welche Werte diese Memberfunktion zurückliefert und ob es da spezielle Werte wie zb -1 gibt, die irgendwas spezielles bedeuten. Eigentlich ganz einfach, wie man solche Dinge rauskriegt. > was bedeutet dieses-1 dass kann doch nur eine Inv sein, > als wenn True rauskommt false und umgekehrt oder. Nein, falsch. -1 ist -1. Man sollte bool'sche Vergleiche nicht mit "echten" Integer vergleichen mischen. Früher war das Resultat eines Vergleiches eine Integer Zahl. Normalerweise aber 0 (false) oder 1 (true). Von einem definierten -1 habe ich noch nie gehört. Es gab dann so Krücken wie: if(integervariable1-integervariable2) die auch dazu beigetragen haben das Verständnis für C zu fördern. Amateur schrieb: > Man sollte bool'sche Vergleiche nicht mit "echten" Integer vergleichen > mischen. wo wird denn hier was vermischt? Das ist ein ganz normaler vergleich mit -1 da könnte auch 42 oder 3 stehen. Man Leute, das ist ja schlimmer als Kindergarten hier - ein noch weniger Ahnung als der nächste. Die -1 ist der Standard Rückgabe einer jeden vernüftigen PC-Funktion für einen ungültigen Wert. Die 0 ist nunmal ein korrekter Wert und ab da passt alles. ^^ das ist aber schon sehr "geekiger" humor... Ohje ich glaube ich muss euch mal sagen, wie ich darauf komme, dass das nicht bedeuten könnte.
Wenn X= False oder Low war, wurde es im Nächten Programmdurchlauf oder Interrupt True oder High. Ich habe mich einwenig mit Arduinno Webservern beschäftigt für Hausautomatisierung und so. In einem Beispiel habe ich dann genau diesen Befehl wieder gefunden. Konnte mir aber nicht vorstellen, dass wenn ich in eine Checkbox einen Haken setze diese Dann einen False ausgibt. Deshalb frage ich halt nochmal ob ich mich damals bei dem ^-1 getäuscht habe denn eigentlich kenne ich ein Not in C/C++ nur als ! vor der Variable. Jan R. schrieb: > Ohje ich glaube ich muss euch mal sagen, wie ich darauf komme, dass das > nicht bedeuten könnte. >
> es gibt hier keinen Zusammenhang Anstatt rumzuraten solltest du lieber die binären Operationen untersuchen und was es mit dem 2-er Komplement auf sich hat. Hinweis: -1 ist in einer 2-er Komplementdarstellung ein int mit lauter 1 Bits. Also 0xFFFF Wendet man 0xFFFF XOR-mässig auf ein beliebiges Bitmuster an, dann werden alle Bits geflippt (weil in 0xFFFF ja alle Bits 1 sind) Mit einem NICHT, wie du es da oben in einem Vergleich postulierst, hat das alles nicht das geringste zu tun. > Deshalb frage ich halt nochmal ob ich mich damals bei dem ^-1 getäuscht > habe denn eigentlich kenne ich ein Not in C/C++ nur als ! vor der > Variable. 0x0000 ^ 0xFFFF -> 0xFFFF 0xFFFF ^ 0xFFFF -> 0x0000 die XOR Operation dreht die Bits um. Und: In C gilt: ein Ergebnis von 0 ist logisch falsch. Ein Ergebnis ungleich 0 gilt als logisch wahr. 0x0000 ist eine glatte 0 und daher gilt dieses Ergebnis als logisch falsch. Ein Ergebnis von 0xFFFF ist ungleich 0 und gilt daher als logisch wahr. C-Buch! Binäre Operationen: & (und) | (oder) ^ (xor) ~ (not) Logische Operationen && (und) || (oder) ! (nicht) Binäre Operationen verknüpfen ihre Argumente bitweise und liefern wieder ein Bitmuster. Logische Operationen verknüpfen wWahrheitswerte und liefern wieder einen Wahrheitswert (mit dem Zusatz: 0 ist logisch falsch, ungleich 0 ist logisch wahr; der Operator liefert 0 für falsch und 1 für wahr) Und nein: ein xor dreht Bits um. Das bedeutet aber nicht notwendigerwiese das aus true false wird oder umgekehrt. Bsp: 5 ^ -1
1111 1010 ist im 2-er Komplement eine negative Zahl. Nämlich welche?
0000 0110 ist das Bitmuster für 6. Also ist 1111 1010 das Bitmuster für -6.
5 ist ungleich 0 und hat daher einen Wahrheitswert von TRUE -6 ist ungleich 0 und hat daher einen Wahrheitswert von TRUE Das Ergebnis müsste aber FALSE sein, damit das ein ! (nicht) sein kann. Daher
(Selbst dann, wenn es einen bestimmten Zahlenwert für x gibt, für den die Operation tatsächlich einer Nicht-Operation gleichkommt. Wir reden hier aber vom allgemeinen Fall, der für alle Zahlenwerte und nicht einfach nur 'zufällig' gilt) Moral: schmeiss nicht binäre und logische Operationen durcheinander. Das sind 2 verschiedene Paar Schuhe. Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
|
|