Hallo, ich habe ein kleines Problem mit meinem AVR Studio 4 ich lese 2 ADCs ein und will diese multiplizieren dafür speichere ich sie zuerst in einer int-Variablen und multipliezie sie dann und speichere das Ergebnis in einer unsigned long variable leider gibt der Compiler mir als Ergebnis immer 0 oder 64512 zurück obwohl der Größtmöglichste wert 1024*1024 ist. Hat einer von euch eine Ahnung woran das liegt? Gruß Sascha
Sascha G. wrote: > ich habe ein kleines Problem mit meinem AVR Studio 4 ich lese 2 ADCs ein > und will diese multiplizieren dafür speichere ich sie zuerst in einer > int-Variablen und multipliezie sie dann und speichere das Ergebnis in > einer unsigned long variable leider gibt der Compiler mir als Ergebnis > immer 0 oder 64512 zurück obwohl der Größtmöglichste wert 1024*1024 > ist. Hat einer von euch eine Ahnung woran das liegt? Poste mal den Code. Eventuell musst du da mal casten.
Hallo, Ja, das Problem liegt an dem Menschen der vor dem AVR Studio 4 sitzt :-) poste deinen Sourcecode Gruß aus dem Odenwald
Gast
#1089203
Das Ergebnis einer int-Multiplikation ist auf 32767 (bzw. 65535 bei unsigned int) beschränkt. Du musst mindestens einen der beiden Faktoren nach long (oder unsigned long) casten, damit die Multiplikation ebenfalls als long ausgeführt wird. Also bspw. so:
1 | |
2 | |
3 | |
4 | |
okay danke der Tip hat geholfen Gruß Sascha
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.