Anfänger: Wert bei jedem Durchlauf zwischen 0 und 1 hin und her wechseln

Gast #4193254
Lesenswert?
• ▲
▼
Hallo Forengemeinde,

ich versuche eine Variable bei jedem Programmdurchlauf zwischen 1 und 0 
hin und her zu wechseln.

while(1) {
 Boolean = Boolean + 1

switch (Boolean)
{
    case 0:
        mache etwas
        break;

    case 1:
        mache etwas anderes
        break;

}
}

Jetzt lese ich jedoch hier:

http://rn-wissen.de/wiki/index.php/C-Tutorial#Boolean_.28Logische_Variablen.29

das es solche Wahrheitstypen nicht gibt.

Wie macht man es denn dann mit "int"? Kann mir das jemand bitte an einem 
kleinen Beispiel mal zeigen?

MfG Paul
Gast #4193265
Lesenswert?
• ▲
▼
Die Antwort steht praktisch in dem Link, den du selber gepostet hast:

    int a;
    if   (a)  {printf("a ist TRUE")}     // hat gleiche Wirkung wie
    if (a!=0) {printf("a ist TRUE")}

Also:       Integerausdruck = 0 ist FALSE
            Integerausdruck !=0 ist TRUE





MfG Nils
Gast #4193267
Lesenswert?
• ▲
▼
Das Tutorial ist sehr alt oder bezieht sich auf veraltete¹ Compiler. 
bool gibt es schon länger in <stdbool.h>

Wenn man bool will und der Compiler bool kann, sollte man bool nehmen, 
statt ein umständliches Ersatzkonstrukt zu bauen.
1
#include <stdbool.h>
2
#include <stdio.h>
3

4
int main(void)
5
{
6
    bool led_is_on = false;
7
    for (int i = 0; i < 10; ++i)
8
    {
9
        if (led_is_on)
10
        {
11
            printf("an\n");
12
        }
13
        else
14
        {
15
            printf("aus\n");
16
        }
17
        led_is_on = !led_is_on;
18
    }
19
    return 0;
20
}




¹gerade kommerzielle Embedded-Compiler brauchen ca. 20 Jahre länger als 
der Rest der Welt, um Sprachstandards umzusetzen.
Gast #4193624
Lesenswert?
• ▲
▼
c-hater-hater schrieb:
> Peter II schrieb:
> braucht man aber nicht
> x = ~x
>
> Dann togglet aber jedes bit von x und nicht nur das LSB. Also z.B.  1
> <--> -2  oder  0 <--> -1.
> So würde es aber gehen:int x = 0;
> //…
> x ^= 1;

Nach Neandertallogik wäre es OK
int x = O;
...
x = ~x;

Der gleiche Scheiss, den du hier schreibst.
Gast #4193645
Lesenswert?
• ▲
▼
Du, als C Verächter, schreibst, alles ausser 0 ist true. Es spielt also 
keine Rolle, wieviel Bits gekippt werden.

Ich schreibe: Nimm die typsichere Lösung. Geht immer, C, C++ und was 
sonst noch gefällt.

Zahl = Zahl;

Boll = Boll;
Gast #4193651
Lesenswert?
• ▲
▼
Hab ich da was verpasst? Will der TE jetzt nicht mehr zwischen 0 und 1 
togglen?

Das mit dem XOR 1 sollte auf jeden Fall funktionieren, bei Bool (falls 
Boll == Bool) und auch bei int. Gleich wie var = !var; was IMHO die 
beste Lösung ist.
Gast #4193661
Lesenswert?
• ▲
▼
Ihm gehts um Bool, darum funktioniert das in den verschiedenen 
Varianten.
Man sollte aber trotzdem Zahlen und Logik trennen, typischer 
programmieren. Aber das ist wohl eher ein Problem der Profis. ;-)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.