C Verzweigung + Or korrekt?

Gast #723130
Lesenswert?

Das ist nicht korrekt so. Du hast eine falsche Vorstellung davon, was 
logische Verknüpfungen tun. Hier wird zunächst 5 und 12 per logischem 
ODER bitweise miteinander verknüpft. Das Ergebnis ist dabei 13. Damit 
wird x dann verglichen.

> Das Porgramm soll den Teil der kommt nur ausführen, wenn x ≠ 5 oder x ≠
> 12 is. Also für alle x ≠ 5,12.

Du meinst, wenn wenn x ≠ 5 und x ≠ 12 ist.

Du mußt es schreiben als:
1
if (x != 5 && x != 12)
#723134
Lesenswert?

Nö, das geht nicht. "5 | 12" ist ein konstanter Wert, und zwar in 
Binärschreibweise
1
    00000101
2
  | 00001100
3
  ----------
4
  = 00001101 = Dh bzw. 13d
Es wird oben also überprüft, ob x ungleich 13 ist. Da kannste aber auch 
gleich
1
if(x != 13)
2
{}
schreiben. Außerdem dürfte eine binäre VerODERung für Deine Zwecke 
sowieso ungeeignet sein. Was Du brauchst ist ein logisches UND (es 
soll ja weder 5 noch 12 sein), und das heiß in C "&&".

Du musst in dem Fall zwei getrennte Abfragen machen, also z.B.
1
if((x != 5) && (x != 12))
2
{}
Gast #723190
Lesenswert?

> wie denn nun ^^also es soll ausgeführt werden wenn x ≠ 5 und auserdem
> nicht wenn x ≠ 12 beides zugleich kommt nicht vor.

Daß x weder 5 noch 12 (also nicht 5 und auch nicht 12) ist, kann sehr 
wohl vorkommen.
Die Bedingung "x ist nicht gleich 12 oder x ist nicht gleich 5" ist 
immer wahr, denn x ist immer entweder ungleich 12 oder ungleich 5 
(oder beides).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren