Bernhard Wächter wrote:
>
> #define MEINBIT1 1;
Ein #define definiert einfach nur eine Textersetzung.
Dieses #define hier bedeutet, dass überall dort wo der Text "MEINBIT1"
im Quellcode vorkommt, dieser Text durch "1;" ersetzt werden soll.
Wo kommt dieser Text vor?
Na hier
if ( !(AbfragePINB1 & (1<<MEINBIT1)) ) {
und jetzt mach mal die Textersetzung. Ersetze "MEINBIT1" durch
"1;". Du erhältst:
if ( !(AbfragePINB1 & (1<< 1;)) ) {
^
Und jetzt die Frage: |
Was soll der ; hier ------------+
> Achja und kann mir bitte jemand erklären für was diese zahlen in den
> Klammern nach dem while und return Befehl bedeuten...? *bitte*
while .... ist ein Schleifenkonstrukt. Solange eine Bedingung wahr
ist, wird der Schleifenrumpf wiederholt.
while( 1 )
Was ist in diesem Fall die Bedingung. Die Bedingung ist "1"
Jetzt kommt eine andere C-Regel zur Anwendung. Jeder arithmetische
Ausdruck kann auch als boolscher Wert verwendet werden. In diesem
Fall gilt: 0 repräsentiert den Wert 'logisch falsch', während
jeder nicht 0 Wert den logischen Wert 'logisch wahr' darstellt.
Die while Schleife hat also als Bedingung: immer wahr. Und da
die Bedingung immer wahr ist, kann diese Schleife nie abgebrochen
werden. Es handelt sich also um eine Endlosschleife, die ständig
wiederholt wird.
return(0)
Die Klammern sind bei return unnötig. return ist keine Funktion.
return 0 .... besagt ganz einfach, dass diese Funktion (auch main
ist nichts anderes als eine Funktion) bei ihrer Rückkehr den Wert
0 liefern soll. Eine Funktion liefert einen Wert. So wie zb die
Sinus Funktion einen Wert liefert, nämlich den Sinus des angegebenen
Winkels
j = sin(winkel)
Innerhalb der sin-Funktion werden irgendwelche Berechnungen angestellt
bis der Sinus Wert feststeht und dann muss diese Funktion diesen Wert
zurückliefern, so dass er dem Aufrufer zur Verfügung steht. Genau das
macht 'return': Es legt fest welcher Wert zurückgeliefert wird.
Und da deine main - Funktion eine int Funktion ist
int main()
wurde hier festgelegt, dass main einen int, also eine ganze Zahl
zurückliefern wird. Daher sollte die Funktion das aber auch machen,
und tut sie auch. Sie liefert 0 zurück - return 0;