Archiv
Ansicht:   
Suche   erweiterte Suche

Nachricht aus dem Archiv

MudGuard schrieb am 09.August.2009, 21:11:11 in der Kategorie pc.coding

gelöst - aber nicht ganz verstanden (C)

> ADN6 = (long) ad;
> maxlimit = 100*ADN6;

Vermutung: ad ist kein long. 100 ist kein long. Also wird bei der Berechnung auch nicht mit long gearbeitet.

Statt des Casts bei ad würde vermutlich auch genügen, 100L zu schreiben, also explizit eine long-100 statt einer int-100.

Damit wäre auch einer der Operanden des * ein long, womit die Berechnung in long stattfindet.

> Die Frage lautet jetzt, welcher Datentyp ist ad? Also der Wertebereich
> 0...1023 vom A/D Wandler.

also vermutlich ein int (oder gar ein short?).

Leider ist in C ja nicht festgelegt, wieviele Bits ein short, int oder long hat, es gilt nur, daß der Wertebereich von long den Wertebereich von int enthält und der Wertebereich von int den Wertebereich von short.

Im Extremfall könnte das heißen, daß alle 3 Typen denselben Wertebereich haben.

Bei Berechnungen wird im Normalfall der kleinste Typ benutzt, der beide Operanden umfaßt. also bei int + short ein int, bei short + short ein short, bei long + short dann long, ebenso bei int + long ein long.
Archiv
Ansicht:   
Suche   erweiterte Suche
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz