Hallo, leider steig ich gerade bei define-Anweisungen aus. Kann mir jemand sagen was folgendes bedeuten soll ? #define Zustand2 2U #define Zustand1 1U #define Zustand0 0U Im weiteren Programmverlauf werden diese defines einer unsigned charakter Variablen übergeben. Sowas hab ich noch nie gesehen. Danke für eure Hilfe
2U steht für die Zahl (Wert) 2 als unsigned. 2U == (unsigned int) 2
Hi Das Define Zustand0 wird mit dem Wert 0 ersetzt. usw. Ich vermute du verstehst das U nicht. Es giebt an, das die Zahl keine negativen Wert benützt (unsigned). Dies ist für den Compiler wichtig. Google doch suffix Gruss
Huizlipochtli schrieb: > Hallo, > Kann mir jemand sagen was folgendes bedeuten soll ? > #define Zustand2 2U guckstu bei define und C-Präprozessor: http://de.wikipedia.org/wiki/C-Pr%C3%A4prozessor defines sind lediglich Text-Ersetzungen der Form #define <Ersetzungstext> <Ursprungstext> #define PI 3.14159 #define STZM "ein supertolle, oberaffengeile rattenscharfe Zuckermaus" Du kannst also in deinem C-Programm anstelle "Zustand2" überall den Kurz-Text "2U" verwenden. oder anstelle der Tipperei von 3.14... schreibst du PI. Oder in deinem Tagebuch, schreibst du STZM, und schickst den Text durch den Präprozessor. ;-) Der Präprozessor macht dann daraus beim Übersetzen den Langtext
Recht herzlichen Dank für eure schnellen und ausführlichen Antworten. Damit ist die Frage geklärt.
Wegstaben Verbuchsler schrieb: > Du kannst also in deinem C-Programm anstelle "Zustand2" überall den > Kurz-Text "2U" verwenden. autsch, antürlich genau andersrum. Du schreibst als "symbolischen Namen" "Zustand2" im Quelltext, und der "technische Wert" 2U (numerische Wert 2 unsigned") wird dann nacher beim Präprozessieren eingesetzt, z.B. um eine Variable mit diesen Zahlenwert vorzubesetzen.
Ups, jetzt war ich wohl doch zu schnell. Was hätte es denn kaputt gemacht wenn ich das U weglasse, denn 2 ist ja immer noch nicht -2 und unsigned kann ja keine negativen Zahlen. die Frage ist also, warum das 2 überhaupt notwendig ist. Hat das den Grund, daß die 2 hinter der define erst mal nur ein Text ist, und ich mit dem U gleich mit vereinbare wie er es behandeln soll ? Aber Theoretisch könnte ich es doch weglassen. Würde das nicht über implizite Typumwandlung sowieso so wie oben beschreiben erfolgen ?
auch mal was gewußt :) ...gefällt mir :) ...und auch wenn also die signed-Konstante nur positiv wäre, wie z.B. die Zahl 2 würde das zu einem Fehler bei der Zuweisung zu einer unsigned Variable führen ?
Nein, da gibt es impliziete cast: http://de.wikipedia.org/wiki/Typumwandlung Aber die Wertebereiche decken sich nicht. Man muss wissen, was man tut.
Hallo, genau das habe ich ja ein paar Posts vorher schon mal angeführt. Theoretisch würde doch ohne das U eine implizite Typumwandlung erfolgen. Und weil ich 2 (positiv) angeben würde und nicht -2 (negativ) ist die Angabe von U doch eigentlich nicht zwingend nötig. Sehe ich das richtig ?
auch mal was gewusst schrieb: > Nein, da gibt es impliziete cast: Casts sind per Definition immer explizit. Ein Cast ist das, was du hinschreibst, wenn du explizit eine Konvertierung hervorrufen willst. Es gibt aber implizite Konvertierungen. Huizlipochtli schrieb: > Theoretisch würde doch ohne das U eine implizite Typumwandlung erfolgen. Ja. > Und weil ich 2 (positiv) angeben würde und nicht -2 (negativ) ist die > Angabe von U doch eigentlich nicht zwingend nötig. An dieser Stelle wäre sie das nicht unbedingt. Man kann aber bei einigen Compilern Warnungen einschalten oder ein lint-Tool benutzen, wo das auch eine Warnung hervorruft. Es schadet ja nicht, im #define den Typ gleich richtig zu machen, statt auszunutzen, daß implizite Typwandlungen das ja eh korrigieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.