C Verständnisproblem: Bedingungen mit Logik Operatoren

OP #2964024
Lesenswert?

Hallo, ich habe ein Problem. Ich versuche gerade einen Quellcode eines 
fremden Projektes nachzuvollziehen.
Das klappt auch ganz gut nur bei der Schleife habe ich ein Problem.

while(!(PINC&(1<<2)))

Nach dem Was ich bisher zu wissen glaube, wenn die Eingabe an PINC zb. 
so aussieht:  00000100
Und (1<<2) so: 00000100

Das jetzt als UND verknüpft: 00000100

while(!(00000100)) und eine while-schleife wiederholt sich solange, 
solange der Ausdruck in den Klammern wahr(true) ist.
Ist jetzt 00000100 true?
#2964049
Lesenswert?

Max B. schrieb:
> Nach dem Was ich bisher zu wissen glaube, wenn die Eingabe an PINC zb.
> so aussieht:  00000100
> Und (1<<2) so: 00000100
>
> Das jetzt als UND verknüpft: 00000100

Richtig.

Max B. schrieb:
> while(!(00000100)) und eine while-schleife wiederholt sich solange,
> solange der Ausdruck in den Klammern wahr(true) ist.

while(x) läuft so lange, wie x wahr ist. In C ist der Wert 0 falsch und 
alle anderen Werte wahr. Das Aufrufezeichen negiert den Wert (aus wahr 
wird falsch, aus falsch wird wahr).

00000100 ist wahr, denn es ist nicht 0.
!(00000100) ist falsch, denn 00000100 ist wahr.

Die Schleife while(!(00000100)) läuft also nicht.

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