mikrocontroller.net

Forum: Compiler & IDEs unverständliche Zeile in C-Code


Autor: c_anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin gerade dabei mich in c einzuarbeiten und bei dabei auf folgende 
zeile gestoßen,
return(PINC & _BV(0) ? 1 : 0);
ich frage mich wann eine 1 und wann eine 0 retuniert wird.

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if (PINC & _BV(0)){
return 1;
}else{
return 0;
}

^^

Autor: MeinerEiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn mich nicht alles täuscht, heisst das umgeschrieben einfach so:

[c]
if (PINC & _BV(0))
{
  1
}
else
{
  0
}
[/code]

Autor: c_anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erstmal danke, ich bekomme also eine 1, wenn ich an den vierten PIN von 
PORTc 5v anlege?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Dingen schimpft sich Ternärer Operator. Geht so:

( (Bedingung) ? (Wahr-Wert) : (Falsch-Wert) )

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c_anfänger schrieb:
> erstmal danke, ich bekomme also eine 1, wenn ich an den vierten PIN von
> PORTc 5v anlege?
return(PINC & _BV(0) ? 1 : 0);

Wie kommst du da auf den vierten Pin? _BV(x) ist nichts anderes als
1 << x
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.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.