www.mikrocontroller.net

Forum: PC-Programmierung C: Cast von Int16 (short) in float (double) eines Zeigers


Autor: Pascal O. (raven761)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

folgens mache ich:
float G1, G_inc, tmpwert;
Int16 *current_in, *current_out;
Int16 Buffer[100], k;

current_in = Buffer;

tmpwert = (float)current_in[i] *(G1-G_inc*k);
current_out[i] = (Int16)tmpwert;


Der Code ist vereinfacht dargestellt.

So, mein Problem ist, dass ich in tmpwert falsche Werte erhalte. Ich 
möchte die Berechnung so vornehmen, dass der Anfangszeiger von Buffer in 
current_in kopiert wird und ich mittels current_in die Multiplikation 
mit den float Werten vornehme. Damit dies geht, muss ich den Wert von 
Buffer jedoch casten als float. Aber es geht nicht!

Kann es sein, dass ich durch meine Methode den Zeiger selber caste? 
Müsste ich es dann so umschreiben?
tmpwert = current_in[i];
tmpwert = tmpwert *(G1-G_inc*k);
current_out[i] = (Int16)tmpwert;

Ich danke euch für eure Antworten! Kann den Code leider nicht 
überprüfen, hab mein DSP Board net da :-/

Gruß, Pascal

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an dem Code ist doch nix hardwareabhängiges drin.
probiers doch mal mit einem normalen c-compiler

mit dem bisschen code, was du hier vorwirfst kann man nichs sagen.

bis auf eine wird keine der Variablen initialisiert, i gar nicht erst 
deklariert.



prinzipiell sollte die berechenung ok sein, wenn du sicher gehen willst, 
setze doch einfach klammern.

tmpwert = ((float)(current_in[i])) *(G1-G_inc*k);

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der cast ist inklusive der Klammern überflüssig, aber eigentlich egal

Autor: Pascal O. (raven761)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sich erledigt, war ein ganz anderes Problem! Danke trotzdem :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.