Hallo, ich bin gerade dabei mich in c einzuarbeiten und bei dabei auf folgende zeile gestoßen,
1 | return(PINC & _BV(0) ? 1 : 0); |
ich frage mich wann eine 1 und wann eine 0 retuniert wird.
|
Forum: Compiler & IDEs unverständliche Zeile in C-CodeHallo, ich bin gerade dabei mich in c einzuarbeiten und bei dabei auf folgende zeile gestoßen,
ich frage mich wann eine 1 und wann eine 0 retuniert wird. Wenn mich nicht alles täuscht, heisst das umgeschrieben einfach so: [c] if (PINC & _BV(0)) { 1 } else { 0 } [/code] erstmal danke, ich bekomme also eine 1, wenn ich an den vierten PIN von PORTc 5v anlege? Das Dingen schimpft sich Ternärer Operator. Geht so: ( (Bedingung) ? (Wahr-Wert) : (Falsch-Wert) ) ich wage mal einen schuss ins blaue ^^ wenn an PORTC der pin PB0 1 ist wird 1 zurückgegeben wenn PB0 0 ist wird 0 zurückgegeben das xxx ? 1 : 0 ist glaube wie eine IF (xxxx) 1 ; else 0; c_anfänger schrieb: > erstmal danke, ich bekomme also eine 1, wenn ich an den vierten PIN von > PORTc 5v anlege?
Wie kommst du da auf den vierten Pin? _BV(x) ist nichts anderes als
damit ergibt sich 1 << 0, bzw. ausgerechnet halt 1. Wenn du nun PINC damit maskierst, bleibt eine Eins übrig, wenn Bit 0 eine Eins liefert. Noch was: Lass die Klammern um den ganzen Return-Ausdruck weg, return ist keine Funktion. >ich wage mal einen schuss ins blaue ^^ Wohl eher in ein sehr dunkelblaues Etwas mit Schornstein dran. >wenn an PORTC der pin PB0 1 ist wird 1 zurückgegeben wenn PB0 0 >ist wird 0 zurückgegeben Wäre das das Ding reif zum patentieren. Wenn PB0 == Pin0 an PortB 1 wird... 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.
|
|