Hy!
Habe ein ähnliches Problem, vielleicht könnt ihr mir weiterhelfen:
unsigned long x = (10*3600) + (30 *60);
Ich würde "37800" erwarten.
Als Ergebnis kommt "4294939560" raus.
Was mache ich da falsch??
[EDIT] Hab diese Diskussion abgespalten, weil keine Verbindung mit Uralten Tread.
Uwe
Moderator
[/EDIT]
Weil normal in int gerechnet wird wenn nichts dabei steht oder einer der Datentypen nicht was anderes ist.
Richtig:
unsigned long x = (10 * 3600UL) + (30 * 60);
Danke, das funktioniert!
Blöde Frage: Wie mache ich es dann, wenn ich Variablen habe die "unsigned longs" sind?
unsigned long x = 103600;
unsigned long y = 30 60;
unsigned long z = x + y;
Danke für die Antwort!
flashdash:
Blöde Frage: Wie mache ich es dann, wenn ich Variablen habe die "unsigned longs" sind?
Das hat dir doch Serenifly schon geschrieben.
gib mal das ein
unsigned long x = 10 * 3600UL;
unsigned long y = 30 * 60UL;
unsigned long z = x + y;
void setup() {
Serial.begin(115200);
Serial.println(F("\nStart"));
Serial.print(z);
}
void loop() {
}
Verwende float am Uno nur dann, wenn es sich absolut nicht vermeiden lässt.
In 9 von 10 Fällen lässt es sich vermeiden.
flashdash:
wenn ich Variablen habe die "unsigned longs" sind?
Was links steht ist erst mal egal! Eine der Variablen die rechts sind muss unsigned long sein damit auch darin gerechnet wird
Bei z = x + y muss man nichts machen da die schon unsigned long sind. Aber Integer Literale sind erst mal nur int
Vielen Dank! Das "UL" beim Erstellen der Variablen hat´s gebracht. Ihr seid SPITZE!
Hi
float ist aber der teuerste Datentyp, Den der Arduino so zu bieten hat.
MfG
PS: Ein cast geht hier auch.
long x=(uint32_t)y+z;
Hi
Und, meines Wissen nach, 'etwas' mehr Rechenzeit, als bei den anderen Datentypen, wo wirklich nur '4 Byte' zusammen gezählt werden müssen.
MfG
Peter-CAD-HST:
"kostet" auch nur vier Byte
Kostet Flash für die Float-Bibliothek und ziemlich Rechenzeit im Vergleich zu Integern. Weil die einfachen µC nicht direkt mit Gleitkommazahlen umgehen können
combie
May 14, 2020, 6:01pm
14
Was bedeutet das im Detail?
Probiere es aus!
Und schaue dir das Kompilat an.