C++ "ODER" - operator
geht das irgendwie?
if((a || b) == 0) return 1;
return 0;
so wie Ihr,...wenn a ODER b gleich null, dann...aber es ist nicht für mich arbeiten.
mein code ist:
bool Circle2::contains(Line2 l) {
if((p1.distanceFrom(l.p1) || p1.distanceFrom(l.p2)) <= r) {
return 1;
}
return 0;
}
Als Randbemerkung deine code-Formatierung in die zweite ist schrecklich. Es ist leicht zu übersehen, die
Bitte verwenden Sie
ich gar nicht sehen, die
Sie sind auf der Suche für die SYMBOL-Sprache zu Programmieren, nicht in C++; es ist eine Sprache, wo Sie schreiben Dinge wie
Eine gute Frage, auf die Grundlagen, denn der compiler wird akzeptieren diese Fragmente und dann etwas tun, was ein Anfänger vielleicht überraschend finden.
return 1;
und denke, dass return 0;
ist, wird der "then" - Klausel, und nicht den impliziten "else" - Klausel.Bitte verwenden Sie
return true
oder return false
. Ja, ich bin mir bewusst, dass der Compiler richtig interpretieren, aber... wenn du gehst, zu erklären, bool, zumindest bool keywords.ich gar nicht sehen, die
return 1
!Sie sind auf der Suche für die SYMBOL-Sprache zu Programmieren, nicht in C++; es ist eine Sprache, wo Sie schreiben Dinge wie
if (i|j|k) == (10|20)
mit der Bedeutung "entweder i, j oder k sind gleich 10 oder 20" ... cs.arizona.edu/iconEine gute Frage, auf die Grundlagen, denn der compiler wird akzeptieren diese Fragmente und dann etwas tun, was ein Anfänger vielleicht überraschend finden.
InformationsquelleAutor Jaanus | 2011-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie schreiben Sie die volle Ausdruck:
Und in der zweiten-code:
Wenn Sie
((a || b) == 0)
bedeutet dies "Ist das logische oder dera
undb
gleich 0 ist. Und das ist nicht das, was Sie hier wollen.Und als Randnotiz: die
if (BooleanExpression)return true; else return false
Muster kann verkürzt werden, umreturn BooleanExpression;
InformationsquelleAutor CodesInChaos
Haben Sie die Bedingung angeben, die separat jedes mal:
Wenn Sie
es hat eine andere Bedeutung: (a || b) bedeutet, "wenn entweder a oder b ungleich null ist (dh. true), dann wird das Ergebnis dieses Ausdrucks ist wahr".
Also, wenn Sie (a||b) == 0, prüfen Sie, ob das Ergebnis der zuvor erläuterten Ausdruck ist gleich null (oder false).
InformationsquelleAutor Rao
Der Sprache C++ gibt an, dass die Operanden von
||
("oder") " boolean-Ausdrücke.Wenn
p1.distanceFrom(l.p1)
ist nicht boolean (das ist, wenndistanceFrom
returns int oder double, oder einige Klasse numeric type), wird der compiler versuchen, zu konvertieren, es zu boolean.Sowohl für den Einbau in einen numerischen Typ, der Umbau ist: nicht-null konvertiert zu true, null konvertiert auf false. Wenn der Typ
p1.distanceFrom(l.p1)
Klasse TypFoo
, wird der compiler-Aufruf einen (und nur einen) user defined conversion, z.B.Foo::operator bool()
zu konvertieren, wird der Wert des Ausdrucks bool.InformationsquelleAutor tpdi
Ich denke, Sie wirklich wollen, etwas wie dieses:
InformationsquelleAutor Jim Lewis
Spaß mit Vorlagen:
Im Einsatz:
Führt den gleichen Vergleich, wie Sie normalerweise tun würde, aber an Ihrer Bequemlichkeit.
InformationsquelleAutor Marlon
Wenn Sie viel code, können Sie erwägen, eine helfende Methode:
Wenn Sie mal <, manchmal <=, >, >= und so weiter, sollte man vielleicht übergeben Sie dem Betreiber zu, in form einer Funktion.
In einigen Fällen Ihre Absichten, indem Sie schreiben:
ausgedrückt werden können mit einem bitweisen oder:
vereinfacht und zu
Aber Lesen, auf bitweise Operationen und testen Sie es sorgfältig. Ich benutze Sie nur selten und vor allem habe ich nicht mit C++, für einige Zeit.
Beachten Sie, dass Sie invertiert die Bedeutung zwischen Ihrem Beispiele 1 und 2, Rückgabe von true und false in die entgegengesetzte Richtung.
Und logisches kleiner-gleich gar keinen Sinn, natürlich. 🙂
InformationsquelleAutor user unknown
C++ unterstützt nicht alle bauen so. Verwenden
if (a == 0 || b == 0)
.Ich meinte semantisch.
(a || b) == 0
wird wahr, wenn beidea
undb
sind falsch.yeah ich Suche nach der Funktion, wie in der diskreten Mathematik, also
(a || b) == 0
wäre wahr, wenn beide wahr sind, und false, wenn mindestens 1 ist falseInformationsquelleAutor Cat Plus Plus
Ihren Zustand sein sollte
(a == 0 || b == 0)
oder(p1.distanceFrom(l.p1) <= r || p1.distanceFrom(l.p2)) <= r)
InformationsquelleAutor helium
C++ ist nicht so schlau. Sie haben zu tun, jeder Vergleich manuell.
InformationsquelleAutor KyleWpppd
alternativ :
(c.Contains('All') || c.Contains('')) ? "[ClientText] LIKE '%'" : "[ClientText] = '" + c + "'";
cannot convert string bool Fehler.Versuchen, diese
textBox1.Text == "one" || "two"
. Können Sie nicht tun-den linken Ausdruck erhalten evaluiert zu einem booleschen, dann bist du Links versuchen zu bewertenboolean || "two"
, was in der Fehlermeldung, die Sie erwähnt.Können Sie nicht Operatoren kombinieren, in der Art, wie ich vermute, Sie werden versuchen:
Müssen Sie qualifizieren jede Bedingung wie folgt:
Gibt es Möglichkeiten, um dies einfacher zu machen, finden Sie die Antworten auf diese Frage für einen alternativen Weg, es zu tun
Ich würde empfehlen: