Gast
#3772966
Hallo, habe hier eine Multiplikation, die merkwürdige Erbebnisse liefert.
1 | |
2 | |
3 | |
4 | |
5 | |
Liegt das Problem darin, dass ich verschiedene Variabel-Typen verwende? Wenn ja, müsste ich auf uint64_t casten?
1 | |
|
Anzeige
|
AVR-Studio4: Multiplikation gibt merkwürdige Werte
Gast
#3772966
Hallo, habe hier eine Multiplikation, die merkwürdige Erbebnisse liefert.
Liegt das Problem darin, dass ich verschiedene Variabel-Typen verwende? Wenn ja, müsste ich auf uint64_t casten?
Gast
#3772972
HelmutG schrieb: > Liegt das Problem darin, dass ich verschiedene Variabel-Typen verwende? welchen Problem denn? Was kommt denn raus? ein cast sollte hier nicht notwendig sein, der größer Datentype der beiden Faktoren wird genommen.
Gast
#3772974
Mist ja du brauchst den cast, weil x ja nur 16bit ist Da das Produkt nicht in 16 Bit, aber immerhin in 32 Bit darstellbar ist, reicht es, einen der beiden Operanden auf 32 Bit hochzucasten, so dass die gesamte Multiplikation ebenfalls in 32 Bit ausgeführt wird. Für die Variable a reicht für ein uint32_t statt eines uint64_t.
Gast
#3773030
Danke für die schnellen Antworten!!! Erstaunlicherweise scheint es manchmal auch ohne Casten zu gehen, warum auch immer!?! Kann man die natürlichen Zahlen für Additionen, Multiplikationen, Divisionen usw. eigentlich grundsätzlich problemlos verwenden? Also wie hier die 487: a = (uint64_t) x * 487; Oder muss man hier auch auf spezielle Eigenheiten achten? HelmutG schrieb: > Kann man die natürlichen Zahlen für Additionen, Multiplikationen, > Divisionen usw. eigentlich grundsätzlich problemlos verwenden? Narürlich nicht. An gerade Wochentagen geht das nur mit Addition und Division, an ungeraden nur mit Multiplikation und Subtraktion. An Wochenenden umgekehrt, und jeden 29. Februar kommt immer 42 raus. Division durch Null ist dann noch ein Sonderfall. Alles weitere dazu steht in deinem C-Buch. Oliver HelmutG schrieb: > Danke für die schnellen Antworten!!! > > Erstaunlicherweise scheint es manchmal auch ohne Casten zu gehen, warum > auch immer!?! Ganz einfach: weil du die C Regeln nicht kennst. Da ist nichts geheimnisvolles drann und so schwierig sind die auch wieder nicht. Die stehen in jedem noch so grindigem C-Buch drinnen. Und zwar irgendwo ganz am Anfang in den ersten Kapiteln. Aber: wie so viele andere, denkst auch du, dass du ohne ordentliche Literatur C lernen kannst. Vielleicht noch mit irgendeinem windigen online Tutorial, das den Strom nicht wert ist, den man für die 10 HTML Seiten braucht um sie zu lesen und von denen der Autor denkt, das wäre alles was man über C wissen müsse (und bei dem von der wenigen präsentierten Information dann auch noch die Hälfte falsch ist) Sorry. Aber das ist so. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|