Hallo, ich möchte gerne einen Wert immer zwischen 1 und 2 wechsel lassen. gibt es dafür eine art befehl? also wenn ein wert zwischen 0 und 1 wechseln soll, schreibe ich immer wert = !wert; gibt es so etwas in der art auch mit anderen werten?
Anfänger schrieb: > Hallo, > ich möchte gerne einen Wert immer zwischen 1 und 2 wechsel lassen. gibt > es dafür eine art befehl? > also wenn ein wert zwischen 0 und 1 wechseln soll, schreibe ich immer > wert = !wert; > gibt es so etwas in der art auch mit anderen werten? Du nimmst deinen gewohnten Befehl und addierst danach immer noch 1 drauf. Voila.
du könntest die variable in- und dekrementieren:
int i = 1 ;
int main(){
while(1){
i++;
//i ist jetzt 2
i--;
//i ist jetzt 1
}
}
Anfänger schrieb: > wert = !wert; Das geht aber nur bei boolean Variablen... bei char ginge bitweises exor... i=00000001b; while(1) { i^=00000011; ... i verwenden... }
Wolfgang R. schrieb: > Anfänger schrieb: >> wert = !wert; > > Das geht aber nur bei boolean Variablen... Nö. Geht immer. # cat a.c
1 | #include <stdio.h> |
2 | |
3 | int main () |
4 | {
|
5 | int wert = 2; |
6 | |
7 | wert = !wert; |
8 | printf ("%d\n", wert + 1); |
9 | |
10 | wert = !wert; |
11 | printf ("%d\n", wert + 1); |
12 | |
13 | return 0; |
14 | }
|
# ./a.out
1 | 1 |
2 | 2 |
der not-Operator gibt bei int Variablen nur 0 oder 1 zurück, als Invertierung nicht geeignet. Das funktioniert im vorliegenden Beispiel, dafür bastelt der Compiler noch zwei Additionen dazu, das ist unter Umständen unnötig lang.
int number = 1; // == 01b while(1) number ^= 0x03; // xor mit 11b ===> number == 2, 1
Wolfgang R. schrieb: > Das geht aber nur bei boolean Variablen... > > bei char ginge bitweises exor... > > i=00000001b; > while(1) > { > i^=00000011b; > ... i verwenden... > } Sagte ich bereits... ;-)
Anfänger schrieb: > ich möchte gerne einen Wert immer zwischen 1 und 2 wechsel lassen. gibt > es dafür eine art befehl? A = ( A == 2) ? 1 : 2; https://de.wikibooks.org/wiki/C-Programmierung:_Ausdr%C3%BCcke_und_Operatoren#Bedingung_.3F: rgds
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.