Forum: Mikrocontroller und Digitale Elektronik zahl toggeln lassen.


von Anfänger (Gast)


Lesenswert?

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?

von Cyblord -. (cyblord)


Lesenswert?

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.

von Lochrasterer (Gast)


Lesenswert?

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

von Dirk B. (dirkb2)


Lesenswert?

wert = 3 - wert;

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

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

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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

von Dussel (Gast)


Lesenswert?

True=1 gilt immer in C++.

von Dussel (Gast)


Lesenswert?

Mathematisches '='.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

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.

von Mike H. (Gast)


Lesenswert?

int number = 1;  // == 01b

while(1)
  number ^= 0x03;  // xor mit 11b ===> number == 2, 1

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

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

von Marc (Gast)


Lesenswert?

Ich finde die Loesung von Dirk B. Am elegantesten.

von 6a66 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.