AND - Operator
-
Hi,
noch ne Frage :D.Wie benutzt man Operatoren richtig?
do{ cout<<"Geben sie ein wieviele Muenzen sie wegnehmen moechten (1-3): "; cin >> count; }while((count<1) and (count>3));Ich will, dass er die Meldung immer wieder bringt, wenn der count kleiner ist als 1 und count größer ist als 3. Irgendwie will das nicht so wie ich das will.
Danke
arnonym
-
arnonym schrieb:
wenn der count kleiner ist als 1 und count größer ist als 3.
Überleg noch mal ganz langsam...
Vielleicht verwechselst du da AND und OR.
Der Operator wäre übrigens && bzw ||.
-
Hi,
Danke für deine Antwort.
Nein ich verwechsele AND und OR nicht, zumindest nicht, wie es in anderen Sprachen gebracht wird :).Das mit der Do-Schleife ist eh komisch, ich kenne halt Do-Until.
Egal, wenns AND und OR ja gar nicht gibt kann das ja auch nicht gehehn, nur es gibt ein Syntax-Highlighting dafür.
Wie hab ich mir das Vorzustellen mit der Do-Schleife, so in etwa?:
Mache
//irgendwas
Solange wie count kleinergleich 1 ist und count größergleich 3 ist.Also ich will, dass er wenn man etwas außerhalb von 1-3 eingibt, dass dann wieder die Eingabe kommt.
Kannst du oder irgendjemand verraten wie ich das dann schreiben muss?
Vielen Dank
arnonym
-
Doch, du verwechselst "and" und "or".
Und es gibt KEINE Sprache in der "and" und "or" anders gebraucht werden.Lies dir das mal durch.
http://de.wikipedia.org/wiki/Logischer_Operator
-
arnonym schrieb:
Wie hab ich mir das Vorzustellen mit der Do-Schleife, so in etwa?:
Mache
//irgendwas
Solange wie count kleinergleich 1 ist und count größergleich 3 ist.Ich glaube dieses hier funktioniert besser:
Mache // irgendwas Solange folgendes gilt: count kleinergleich 1 oder count größergleich 3Hier passt ein "und" nicht mehr, da count ja nicht gleichzeitig <2 und >2 sein kann.
-
übrings gibt es die operatoren wirklich mit namen
and
or
xor
...
-
Hi,
ich habs jetzt
do{ cout<<"Geben sie ein wieviele Muenzen sie wegnehmen moechten (1-3): "; cin >> count; }while((count<1||count>3));Dank Badestrands Erklärung hab ich jetzt kapiert, wie das mit der Do-Schleife funktioneirt.
Und nein, ich verwechsele OR und AND nicht ich habe nur nicht gewusst, wie das umzusetzen war mit der Do-Schleife.
Und scheinbar ist es ja auch egal, ob man or oder || benutzt.
Aber normalerweise benutzt man || oder wie?Danke für die Hilfe

arnonym
-
Ja. || bzw. && ist eben der dafür zugehörige Operator, der in C++ auch garantiert funktioniert.
andundorgehen eigentlich nicht ohne Weiteres (es sind keine Schlüsselwörter der Sprache, auch wenn sie hier im Forum hervorgehoben werden).Übrigens:
}while((count<1||count>3));würde ich eher so schreiben, ist aber natürlich Geschmackssache. Nur finde ich es übersichtlicher:
while (count < 1 || count > 3);Pass ausserdem auf, dass du
countnicht verwendest, wenn du den Namensraumstdmittelsusing namespacebekannt gemacht hast und irgendwo die STL-Algorithmen eingebunden werden, sonst kommt es zu Namenskonflikten (std::count()ist eine Funktion der Standardbibliothek).
-
Nochmals DANKE für die netten Tipps.

arnonym
-
Nexus schrieb:
Ja. || bzw. && ist eben der dafür zugehörige Operator, der in C++ auch garantiert funktioniert.
andundorgehen eigentlich nicht ohne Weiteres (es sind keine Schlüsselwörter der Sprache, auch wenn sie hier im Forum hervorgehoben werden).Es sind DOCH Schlüsselwörter der Sprache, Standard Paragraph 2.5 - Alternative tokens - aber ich würde trotzdem lieber && und || verwenden, weil es üblicher ist. Außerdem wird and und or vom Microsoft Compiler nicht untersützt so weit ich weiß.
Felix
-
Phoemuex schrieb:
...
Man kann auch das hier schreiben:
struct foo ??< foo ()??<??> ??-foo()??<??> int var??(2??); ??>;Gültiges C++.

-
drakon schrieb:
Phoemuex schrieb:
...
Man kann auch das hier schreiben:
...Gültiges C++.

Der Unterschied ist, dass ??< &Co. Trigraphsequenzen sind die vom Präprozessor ersetzt werden, ihr Zweck ist, fremdländische Tastaturlayouts zu unterstützen wo die vorgesehenen Klammern nicht oder nur schlecht zu erreichen sind. and, or etc. sind dagegen alternative Token die nicht vom Präprozessor berührt werden und lediglich vom Lexer in das selbe Token übersetzt werden wie das zugehörige primary token. Zwar gibts auch da einige die so aussehen als ob sie für fremde Tastaturen gedacht sind ( z.B. "<?" als alternative zu "{" ), aber grundsätzlich sind sie als gleichberechtigte Alternative zu sehen im Gegensatz zum behelfsmäßigen Ersatz den die Trigraphsequenzen bieten.
Gerade die Alternativen für die Bit- und logischen Operatoren sind in den AUgen vieler durchaus flüssiger zu lesen und intuitiver zu verstehen, wenn man sich denn schon dran gewöhnt hat, z.B. von anderen Sprachen her. Der wohl einzige Grund warum man sie in C++ so selten sieht ist das M$ wiedermal sein eigenes Süppchen kocht und einen nicht standardkonformen Compiler hat der die Dinger nicht unterstützt.
-
pumuckl schrieb:
Der wohl einzige Grund warum man sie in C++ so selten sieht ist das M$ wiedermal sein eigenes Süppchen kocht und einen nicht standardkonformen Compiler hat der die Dinger nicht unterstützt.
Soviel Einfluss hat MS nun auch wieder nicht. Eher dürfte es andersrum sein, MS unterstützt das nicht, weil es niemand haben will. Von ein, zwei Leuten hier im Forum abgesehen, wie es scheint

-
sdfsdf schrieb:
Doch, du verwechselst "and" und "or".
Und es gibt KEINE Sprache in der "and" und "or" anders gebraucht werden.so wie er die do schleife kennt, also do -> until, dann wäre das richtig...
das wäre ja folgendes
mache
//folgendes
bis (count > 1) UND (count < 3)dann wäre ein und statt oder angebracht
-
arnonym schrieb:
Hi,
ich habs jetzt
do{ cout<<"Geben sie ein wieviele Muenzen sie wegnehmen moechten (1-3): "; cin >> count; }while((count<1||count>3));ich würd sagen du brauchst da && und nicht ||
-
Bashar schrieb:
pumuckl schrieb:
Der wohl einzige Grund warum man sie in C++ so selten sieht ist das M$ wiedermal sein eigenes Süppchen kocht und einen nicht standardkonformen Compiler hat der die Dinger nicht unterstützt.
Soviel Einfluss hat MS nun auch wieder nicht. Eher dürfte es andersrum sein, MS unterstützt das nicht, weil es niemand haben will. Von ein, zwei Leuten hier im Forum abgesehen, wie es scheint

Würd ich auch so sehen.
andundorwerden auch in den wenigsten Büchern erläutert und sind kaum gebräuchlich. Und was das Umstellen von anderen Sprachen betrifft: Versuche, Dinge aus anderen Sprachen in C++ zu übernehmen, führen nicht selten zu Problemen (allgemein gesehen). Übrigens, pumuckl, zeig mir bitte mal einen 100% standardkonformen Compiler.
Skym0sh0 schrieb:
so wie er die do schleife kennt, also do -> until, dann wäre das richtig...
das wäre ja folgendes
mache
//folgendes
bis (count > 1) UND (count < 3)dann wäre ein und statt oder angebracht
Ja, nur hat er zusätzlich noch die falschen Vergleichsoperatoren verwendet (
count < 1bzw.count > 3).
Gustl schrieb:
ich würd sagen du brauchst da && und nicht ||
Wie wärs mit Thread lesen? Bereits der erste Antwortpost weist darauf hin, dass das nicht sinnvoll ist. Man erkennt ausserdem durch eine Sekunde überlegen, dass die Bedingung
count < 1 && count > 3immerfalseergibt...Aber ja, Hauptsache, man hat noch etwas dazu gesagt...

-
***ironiedetektor justiert***
-
Nexus schrieb:
Übrigens, pumuckl, zeig mir bitte mal einen 100% standardkonformen Compiler.

Ich bin ziemlich sicher dass es den nicht gibt. Mit dem Stichwort export kann man bis auf ein oder zwei alle Compiler ausschließen, und vermutlich haben die dann woanders kleine Problemchen, template-Geschichten sind ja prädestiniert dafür. Aber darum gings mir nicht, denn die meistenStandard-Inkompatibilitäten kommen bei vergleichsweise komplizierten Konstrukten vor, eben templates & Co.
MS jedoch weigert sich aus nicht nachvollziehbaren Gründen einfach dem Lexer noch die paar zusätzlichen Token beizubringen die im Standard explizit erwähnt werden, das wäre nichts besonders kompliziertes. Dass so wenige die Dinger benutzen und sie auch in Büchern nur am Rande erwähnt werden (wenn überhaupt) liegt vermutlich hauptsächlich daran, dass man nunmal portablen Code fabrizieren will und der MS-Compiler zumindest in der Windows-Domäne serh weit verbreitet ist.
-
So schlimm ist das nun wirklich nicht, dass
andundorvon Microsoft nicht unterstützt werden (auch wenns dir ums Prinzip geht). Wie gesagt, wird sowieso meistens && und || verwendet, und sonst wird niemand daran gehindert, eigene Makros zu definieren.
-
Die Operatoren and/or/usw. werden von Microsoft auch unterstüzt. Allerdings nur als Makros und müssen zusätzlich inkludiert werden:
http://msdn.microsoft.com/en-us/library/bw6140c5(VS.80).aspxEs gibt auch irgendwo in einem der Foren oder Bugmeldesystemen einen Thread über eben jenes Feature, wo sich Microsoft dazu äussert, dass noch kaum irgendjemand sich dazu geäussert hätte, dass diese Schlüsselwörter vermisst würden. Man sehe keine Nachfrage diese zu implementieren.
Grüssli