www.mikrocontroller.net

Forum: GCC expression immer TRUE?

Autor: gert (Gast)
Datum: 07.05.2008 19:45

hi

ist folgende expression (bTest ) immer true ?

char c;
bool bTest = (c != 'X' || c != 'Y' );

danke
Autor: Oliver (Gast)
Datum: 07.05.2008 19:50

Ja. (Solange da keine ISR c mitten in der Zeile verändert)

Der Klammerausdruck wird nur dann falsch, wenn beide Vergleiche falsch
sind. Da c aber niemals gleichzeitig den Wert 'X' und 'Y' haben kann,
kommt immer wahr raus.

Oliver
Autor: gert (Gast)
Datum: 07.05.2008 19:50

c wird natürlcih im programm verlauf gesetzt

char c;
...
bool bTest = (c != 'X' || c != 'Y' );
Autor: Johannes M. (johnny-m)
Datum: 07.05.2008 20:12

c ist natürlich immer entweder nicht X oder nicht Y. Wie Oliver schon
sagte: Der einzige Fall, in dem die Bedingung nicht erfüllt wäre, kann
nie auftreten, da er bedeuten würde, dass c gleichzeitig X und Y sein
müsste...
Autor: gert (Gast)
Datum: 07.05.2008 20:15

passt
Autor: Andreas Kaiser (a-k)
Datum: 07.05.2008 20:21

Johannes M. wrote:

> c ist natürlich immer entweder nicht X oder nicht Y.

Das nun ist falsch, denn es kann sowohl nicht X als auch nicht Y sein.
Autor: Johannes M. (johnny-m)
Datum: 07.05.2008 20:50

Andreas Kaiser wrote:
> Johannes M. wrote:
>
>> c ist natürlich immer entweder nicht X oder nicht Y.
>
> Das nun ist falsch, denn es kann sowohl nicht X als auch nicht Y sein.
Das spielt doch keine Rolle. Es geht doch darum, dass immer mindestens
einer der beiden Vergleiche wahr ist. Dass auch beide gleichzeitig
wahr sein können, ist schon klar... Hätte vielleicht schreiben sollen "c
ist natürlich immer entweder nicht X oder nicht Y oder nicht X und
nicht Y."
Autor: Andreas Kaiser (a-k)
Datum: 07.05.2008 20:58

Johannes M. wrote:

> Das spielt doch keine Rolle.

Tut es wirklich nicht. Aber wenn man sich schon mit Logik rumschlägt,
dann lieber logisch als unlogisch ;-). Ohne das "entweder" wäre es
korrekt gewesen.

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net