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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.