1E4 > 10000 ?

Gast #1765055
Lesenswert?

Hallo Leute,

mein Compiler sagt mir wenn ich eine Division durch 2 folgendermaßen 
Rechne:

x = 1E4/2

"region Text overflow by 200byte"

hingegen:

x = 10000/2

"alles toll mach weiter so"


Warum ist das so? Wird das auf float gecastet?

Wenn wir schonmal dabei sind. Sollte ich lieber shiften oder explizit 
durch 2 dividieren? geshiftet wird ein (immer) uint16_t.

Viele Grüße
#1765061
Lesenswert?

Thomsen schrieb:

> Warum ist das so? Wird das auf float gecastet?

Wieso gecastet?

1E4 ist ein float. (Eigentlich ein double, aber so genau nehmen wirs 
heute nicht)

> Wenn wir schonmal dabei sind. Sollte ich lieber shiften oder explizit
> durch 2 dividieren? geshiftet wird ein (immer) uint16_t.

Wenn dividieren die logische Erklärung für die Operation ist, dann 
schreib auch dividieren.
Wenn schieben die logische Erklärung für die Operation ist, dann schreib 
schieben.

Wenn eine Division durch Schieben schneller relisierbar ist, dann 
ersetzt dir das der Compiler. Das ist nichts worüber du dir Gedanken 
machen musst, solange du die korrekten Datentypen benutzt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren