Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Oder Operator

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.07.2003, 02:03 Uhr
Andyk



Hi Leute,

vielleicht liegts ja an der fortgeschrittenen Zeit, aber ich habe da ein dummes Problem. Ich habe eine if-Schleife, die mit drei bedingungen, bzw. zwei. mal oder verknüpft ist(wenn nicht (bed1 ODER bed2 ODER bed3)dann...).
Also ich hatte mir das in code so gedacht:

Code:
if(!(bed1||bed2|| bed3))

Aber das haut nicht hin. "Kann ja gar nicht" wird manch einer von euch jetzt sagen. Wenn einer von euch dazu gehört, sag mir bitte warum, und wie ich das hinkriegen kann.
Danke.
--
CU,
ANDYK
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.07.2003, 07:51 Uhr
virtual
Sexiest Bit alive
(Operator)


Klar geht das. Aber vielleicht ist einfach die Bedingung falsch formuliert. Übrigens:

C++:
! ( A || B || C)


ist das Gleiche wie

C++:
!A && !B && !C


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.07.2003, 09:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Also entweder hast du nen Denkfehler in deinen Bedingungen oder du musst die einzeln nochmal klammern damit der das erst auswertet und dann verknüpt.
Das was virtual dir geschrieben hat nennt sich übrigens de morgansche Regeln.
Aus a && b wird !(!a || !b)
bzw. a || b wird zu !(!a && !b)

Finde ich auch sehr praktisch das umzuschreiben macht die Sache meist leichter verständlich wenn man seinen ausdruck nochmal überdenken will.

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.07.2003, 09:47 Uhr
virtual
Sexiest Bit alive
(Operator)


Gibt auch möglichkeiten, an der Performance zu basteln: Wenn man weiß, daß in 75% der Fälle A false ist, empfiehlt sich die zB zweite Variante.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.07.2003, 10:34 Uhr
ao

(Operator)


@Andyk: Was ist denn eigentlich das Problem? Du kannst auch ruhig ein Stück Quellcode zeigen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.07.2003, 17:28 Uhr
Andyk



Danke Jungs für eure Hilfe...jetzt funzts.
Hmmm...war mal ein echtes newbee Problem hinter das man auch durch anleiern der eigenen Zellchen hätte kommen können, aber das war gestern auch weils schon so spät war...und überhaupt...Ausrede1....Ausrede2...usw...
@ao:
Ich wollte die Sache übersichtlich, schlank und verständlich halten, und ich denke für den Zweck der Frage war das ja auch in Ordnung.
Was hätte es gebracht wenn statt bed1, m_pFileDlg->m_bVisible, dran gestanden wäre?
--
CU,
ANDYK

Dieser Post wurde am 11.07.2003 um 17:33 Uhr von Andyk editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.07.2003, 19:19 Uhr
Pablo
Supertux
(Operator)


statt bed1, m_pFileDlg->m_bVisible:

Das hängt nur davon ab, was bed1 sein soll. Da es VC++ Konvention ist, kann ich entziefern, dass m_bVisible ein bool ist, also es ist möglich.

Wie du eine Bedingung erstellest hängt von dem Problem sein. Wenn du uns das Problem erklärst, dann könnten wir die Richtige Bedingung finden.

Du musst auch wissen welche "Stärke" die Operatoren ( && "AND", || "ODER", ^ "XOR", ! "NOT")

der ! Operator ist der stärkste, er wandelt alles sofort um, das heisst von 0 zu 1 und von 1 zu 0.
&& liefert 0 (false) zurück, wenn eine Bedingung 0 (false) ist, egal wie viele weitere Bedingungen es gibt. && ist kommutativ und mit !, || nicht assoziativ

|| liefert 1 (true) zurück, wenn eine der Bedingung 1 (true) ist, egal wie viele weitere bedingungen es gibt. || ist kommutativ aber nicht assoziativ

^ leifert true zurück, wenn beide Seiten unterschiedlich sind. kommutativ.

Deine Bedingung sagt, wenn bed1 false ist, und bed2 false und bed 3 auch false ist, dann ist die Bedingung wahr (genau wie virtual sagte)
Das sind die DeMorgansche Regel.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 11.07.2003 um 19:20 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.07.2003, 22:30 Uhr
Andyk



Hi Pablo,

danke für die antwort, aber das worauf sich Dein Post bezieht, war @ao gerichtet.Tut mir leid wenn ich das etwas missverständlich formuliert habe.Aber @ao weiss bestimmt was ich damit gemeint habe.
--
CU,
ANDYK
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.07.2003, 23:07 Uhr
Pablo
Supertux
(Operator)


ok, null problemo
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: