Forum: Compiler & IDEs expression immer TRUE?


von gert (Gast)


Lesenswert?

hi

ist folgende expression (bTest ) immer true ?

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

danke

von Oliver (Gast)


Lesenswert?

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

von gert (Gast)


Lesenswert?

c wird natürlcih im programm verlauf gesetzt

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

von Johannes M. (johnny-m)


Lesenswert?

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...

von gert (Gast)


Lesenswert?

passt

von Andreas K. (a-k)


Lesenswert?

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.

von Johannes M. (johnny-m)


Lesenswert?

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."

von Andreas K. (a-k)


Lesenswert?

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.

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.