Pages: 1 [2]   Go Down
Author Topic: IR Empfänger - kein stabiler Emfangscode  (Read 2235 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 14
Posts: 952
ATmega 2560
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich kann lesen wie ich will, ich raffe es einfach nicht. Warum benötigt #define keine Datentyp Deklaration? #define ist eigentlich nur ein Label. Wenn ich aber etwas in meiner switch case Anweisung abfrage, dann ist doch der Vergleichswert eine unsigned long Variable. Ich hätte ein Compilerfehler in Form von Datatyp Mismatch erwartet oder sowas. Es kommt aber keine Fehler, es funktioniert einfach. Genau das verstehe ich nicht.

Das hier ist schon so das ich es fast verstehe, das letzte Bit kippt aber leider nicht um.  http://arduino.cc/forum/index.php/topic,44023.0.html
Könnte das jemand bitte noch anders formulieren?

Nochwas. Vielleicht lese ich auch manchmal zu viel  smiley  Bei der Arduino Reference lese ich das der int Wertebereich von -32,768 to 32,767 beträgt. In meinem allgemeinen C Programmier Buch Markt + Technik wäre das allerdings short. Genauso gibts noch andere Überlappungen, wobei im Buch die Wertebereiche auch von 2 verschiedenen Datantypen abgedeckt werden. unsigned int mit unsigned long oder int mit long decken den gleichen Wertebereich ab. Ist das in C nicht eindeutig festgelegt? Kann das jeder Compilerprogrammierer selbst festlegen?


 

Logged

Tschau
Doc Arduino

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21601
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich kann lesen wie ich will, ich raffe es einfach nicht. Warum benötigt #define keine Datentyp Deklaration? #define ist eigentlich nur ein Label. Wenn ich aber etwas in meiner switch case Anweisung abfrage, dann ist doch der Vergleichswert eine unsigned long Variable. Ich hätte ein Compilerfehler in Form von Datatyp Mismatch erwartet oder sowas. Es kommt aber keine Fehler, es funktioniert einfach. Genau das verstehe ich nicht.

Du bringst das etwas durcheinender. #define ist kein Label und definiert kein Label, ist auch keine Variable (Speicher wo ein Wert hineingeschrieben wird).
#define aaaa bbbb
bedeutet
ersetze "aaaa" mit "bbbb"
und zwar als erstes vor dem kompilieren oder sonstwas was der Kompiler so macht. Ganz einfaches Text ersetzen. Da braucht es keinen Datentyp oder sonstwas.

Quote from: Doc_Arduino
Das hier ist schon so das ich es fast verstehe, das letzte Bit kippt aber leider nicht um.  http://arduino.cc/forum/index.php/topic,44023.0.html
Könnte das jemand bitte noch anders formulieren?
Mit dem gerade gesagten ist es Dir vieleicht klar.

Quote from: Doc_Arduino
Nochwas. Vielleicht lese ich auch manchmal zu viel  smiley  Bei der Arduino Reference lese ich das der int Wertebereich von -32,768 to 32,767 beträgt. In meinem allgemeinen C Programmier Buch Markt + Technik wäre das allerdings short. Genauso gibts noch andere Überlappungen, wobei im Buch die Wertebereiche auch von 2 verschiedenen Datantypen abgedeckt werden. unsigned int mit unsigned long oder int mit long decken den gleichen Wertebereich ab. Ist das in C nicht eindeutig festgelegt? Kann das jeder Compilerprogrammierer selbst festlegen?
Die Größe der Datentypen (wieviel Byte dafür verwendet werden und somit die größte darstellbare zahl bzw dei genauigkeit bei Float) hängt von Datenbus des Prozessors ab. Arduino hat einen 8Bit Controller. Das ist etwas anderes als eine 32 oder 64 Bit CPU des PCs. Es gibt auch Datentypen die in bestimmten systemen gleich groß sind. Das ist einfach so. Nimm es einfach als gegeben.

Grüße Uwe
Logged

Offline Offline
God Member
*****
Karma: 14
Posts: 952
ATmega 2560
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe,

jetzt ist das letzte Bit umgekippt. Der Präprocessor ändert quasi meinen Code so ab, als wenn ich gar kein #define verwendet hätte. Sondern alles direkt an Ort und Stelle quer Beet im Code getippt hätte. Und switch case vergleicht sturr was da steht ohne Rücksicht auf Verluste. Richtig?

Das mit den Datentypen ist jetzt klar wie Klosbrühe.  smiley
Logged

Tschau
Doc Arduino

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21601
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe,

jetzt ist das letzte Bit umgekippt. Der Präprocessor ändert quasi meinen Code so ab, als wenn ich gar kein #define verwendet hätte. Sondern alles direkt an Ort und Stelle quer Beet im Code getippt hätte. Und switch case vergleicht sturr was da steht ohne Rücksicht auf Verluste. Richtig?

Das mit den Datentypen ist jetzt klar wie Klosbrühe.  smiley

Richtig !
Logged

Offline Offline
God Member
*****
Karma: 14
Posts: 952
ATmega 2560
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

muß mich nochmal richtig bedanken für die prima Erklärungen. Meine Leitung ist einfach länger.   smiley
Logged

Tschau
Doc Arduino

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21601
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bitte.
Logged

Pages: 1 [2]   Go Up
Jump to: