baeuchlein schrieb am 09.August.2009, 17:27:30 in der Kategorie pc.coding
mein Ideechen dazu
> die Formel
>
> maxlimit = 50*ad;
>
> ist zu einfach. Es muß lauten:
>
> ADN6 = (long) ad;
> maxlimit = 100*ADN6;
>
> ADN6 muß auch noch als long deklariert werden. Scheinbar wird ohne den
> Zwischenschritt \"maxlimit\" trotz long Deklaration keine long Variable. Ich
> habe keine Ahnung. Aber so funktioniert es erstmal.
Ich würde eher sagen, dass die Variable ad als \"long\" definiert werden müsste. Für mich sieht das so aus, als würde aus dem ad irgendwie ein ADN6 erzeugt, welches dann \"long\" wird (oder was bedeutet ADN6 = (long) ad?). Damit wird die eigentliche Formel dann \"geflickt\". Weil hier nun aber auch \'ne 100 statt \'ner 50 drin auftaucht, ist mein Durchblick etwas vernebelt...
Mit der Formel davor ist der Inhalt von maxlimit ja davon abhängig, wieviele Bits ad hat. Wenn ad bit-mäßig \"zu kurz\" ist, kann auch die Zahl \"fünfzig mal ad\" nicht allzu groß werden, egal wie viele Bits ihr zur Verfügung stünden. Und diese Zahl ist es, die am Ende in maxlimit \"eingefüllt\" wird.
Wie viele Bits maxlimit dann hat, ist unwichtig, solange es ausreichend viele sind. Der Fehler entstünde dann ja dadurch, dass ad nicht genügend Bits zur Verfügung hat.
> Die Frage lautet jetzt, welcher Datentyp ist ad? Also der Wertebereich
> 0...1023 vom A/D Wandler.
> Wird demnach in einer Formel immer der kleinere Datentyp von mehreren
> verwendet?
> Ist das Verhalten abhängig von der Entwicklungsumgebung oder allgemein C
> typisch? Weis das jemand?
Hmm, bei der Bedeutung von \"long\" & Co. hängt es ja laut jenem Buch von mir davon ab, was für \'ne Ziel-Architektur man dem Compiler angibt. Riecht danach, als ob so was auch bei Datentypen passieren könnte, die man längenmäßig nicht festgelegt hat. Entweder, der Compiler plärrt, oder er hat sich irgendwas ausgedacht - und warum er sich dann z.B. einen kleinen Datentyp oder was auch immer aussucht, das ist doch an sich egal. Wichtig ist, dass man es ihm eben nicht erlauben darf, also: Länge selber definieren, damit weder der Compiler noch sonst irgendwer das Ganze per Münzwurf o.ä. entscheidet!
Oder seh\' ich da jetzt irgendwas grundfalsch?