Forum: PC-Programmierung Umkehrung von Variablen


von Tom (Gast)


Lesenswert?

Hallo,
ich möchte in C++ die Zahlen zwischen 0 und 1 wechseln.

bei boolschen variablen würde ich schreiben
1
if(x==1) y!=y;

damit würde ja y immer zwischen true und false wechseln.
Jetzt ist y allerdings ein integer. Ist es möglich, dass es auch geht, 
dass y zwischen 0 und 1 wechselt?

habe es versucht, wie oben zu machen, bekam aber nur einen fehler, dass 
dies so nicht möglich ist.

weiss jeamnd rat?

von Icke (Gast)


Lesenswert?

Soweit ich mich erinnere ist TRUE nicht automatisch 1 sondern nur 
ungleich null. Könnte es sein, das es daran liegt, dass die Zuweisung 
nicht möglich ist?

von Rolf Magnus (Gast)


Lesenswert?

Tom schrieb:
> Hallo,
> ich möchte in C++ die Zahlen zwischen 0 und 1 wechseln.
>
> bei boolschen variablen würde ich schreiben
> if(x==1) y!=y;

Eher nicht. Der Operator != ergibt hier keinen Sinn. Du kannst aber 
schreiben:
1
if(x==1) y=!y;

> habe es versucht, wie oben zu machen, bekam aber nur einen fehler, dass
> dies so nicht möglich ist.

Der Fehler hat bestimmt etwas mehr gesagt als: "Error: This is 
impossible". Die exakte Fehlermeldung wäre sinnvoll, genauso wie der 
exakte Code, auf den sie sich bezieht.

von Icke (Gast)


Lesenswert?

und was spricht gegen eine if-else-Abfrage à la

if(x==1)
  y = (y == 1) ? 0 : 1;

von TT (Gast)


Lesenswert?

naja du machst einen Vergleich (Ungleichoperator !=)

du suchst y = !y

von Loetpunkit (Gast)


Lesenswert?

Meinst Du soetwaa?
1
y = y != 0 ? 0 : 1;

von Peter II (Gast)


Lesenswert?

Tom schrieb:
> bei boolschen variablen würde ich schreiben
>
>
1
> if(x==1) y!=y;
2
>

sicher das das so geht? ich würde y = !y verwenden.

für int würde ich einfach das letzte bit invertieren

x = x ^ 1;

von Yalu X. (yalu) (Moderator)


Lesenswert?

1
x = 1 - x;

wechselt ebenfalls zwiachen 0 und 1. Oder
1
x = (x + 1) & 1;

: Bearbeitet durch Moderator
von Max H. (hartl192)


Lesenswert?

x^=1;

Edit: Sehe erst jetzt, dass es schon jemand geschrieben hat.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Loetpunkit schrieb:
> y = y != 0 ? 0 : 1;

Kürzer:
1
y = y ? 0 : 1;

von Dr. Sommer (Gast)


Lesenswert?

In C++ (C weiß ich nicht) tut
1
int x; x = !x;
definitiv das was du suchst; das geht aufgrund der impliziten 
Konvertierung int->bool, invertierung, bool->int.

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.