Von double zu int?
-
CStoll schrieb:
Klar kannst du das:
double dval = 3.14; int ival=(int)dval;//ival wird 3(Nachkommastellen werden dabei abgeschnitten)
Böser Caster :p
MfG SideWinder
-
RobthaR schrieb:
1. Hab ich keine Nachkommastellen , da zu i und j immer 1 dazugezählt werden
und i und j immer Ganzzahlig anfangenGar nie? Wieso dann double?
2. Kann ich Koordinaten mit Nachkommastellen nicht darstellen
Im Ernst, nimm ganzzahlige Datentypen, wenn du kannst. Spart Platz und ist schneller.
MfG
GPC
-
RobthaR schrieb:
ist nicht einmal schlimm , denn :
1. Hab ich keine Nachkommastellen , da zu i und j immer 1 dazugezählt werden
und i und j immer Ganzzahlig anfangen
2. Kann ich Koordinaten mit Nachkommastellen nicht darstellenWarum nimmst du dann double?

-
ich benutze für die Wurzel sqrt und sqrt benötigt double
Hab ne neue Frage : Ich hab jetzt alles richtig gestellt , aber jetzt sagt mir der Compiler :
Der Compiler schrieb:
math_functions.h:42: error: invalid lvalue in assignment
-
Hallo,
kannst du uns vielleicht auch die Codezeile sagen, in der dieser Fehler im Programm auftaucht und vielleicht noch etwas Code davor, der für diese Zuweisung wichtig ist.MfG
-
Ach komm, den Fehler findest du doch auch so.
Progger ist schon ne scheiss bezeichung.
-
RobthaR schrieb:
ich benutze für die Wurzel sqrt und sqrt benötigt double
Nun gut, aber durch einen simplen cast (int->double) kannst du sqrt weiterhin benutzen, die Nachkommastellen interessieren dich ja eh nicht...
-
Jaschi schrieb:
kannst du uns vielleicht auch die Codezeile sagen
Mist , ist mir heute morgen wieder eingefallen
&KoordArrayTypeCXY[FieldPosition] = CXY10(ini,inj); //und noch #define CXY10(x,y) ((x<<5)|(y))Das wären die Zeilen
Ich hab im Internet schon nach dem Fehler gesucht und hab gefunden , das der Fehler nur bei AMD64 Prozessoren und G++ Compilern auftaucht . Ich bin sicherlich nicht der einzige , der diese benutzt . Villeicht weiß schon jemand wie man den Fehler beheben kann .Außerdem weiß ich nicht was lvalue und assignment bedeuten sollen
-
Ja, das liegt daran dass man mit G++ und AMD64 nicht die Adresse eines Arrayfeldes ändern kann sondern nur dessen Inhalt. Das & vor dem Array ist da völlig fehl am Platz

-
Danke

Habs jetzt mit nem Pointer gemacht
-
RobthaR schrieb:
Ich hab im Internet schon nach dem Fehler gesucht und hab gefunden , das der Fehler nur bei AMD64 Prozessoren und G++ Compilern auftaucht .
Keine Ahnung, wo du das gelesen hast. Aber das stimmt so nicht.
&KoordArrayTypeCXY[FieldPosition]Dies ist schlichtweg kein l-value, kann also maximal als r-value genutzt werden. Und r-values kannst du niemals nie etwas zuweisen. Für welche Plattform du komplierst und welchen Compiler du verwendest, ist dabei völlig unerheblich.
Übrigens:
Für sowas
#define CXY10(x,y) ((x<<5)|(y))solltest du besser eine inline Funktion verwenden.