• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

C++ Grundlagen

Status
Für weitere Antworten geschlossen.
Ich vermute einfach mal das eq vom typ unsigned char ist.
60 ..\\C++\tr.cpp [Warning] converting to `unsigned int' from `double'


Wenn du nun pow verwendest gibt es dir einen double wert zurück (wegen größt möglicher präzision). Da aber unsigned char nur die werte von 0-255 enthaltne kan und doulbe zahlen im bereich von 4 mrd. und mehr aufnehmen kann führt das ganze zu einem enormen datenverlust aufgrund der typkonvertierung. Da sich der compiler denkt das dieser verlusst markant ist warnt er dich.
In dem Fall führt das ehr zu einem Verlust der Nachkommastellen. Außerdem ist implizites Casting schlechter Stil. Entweder explizit casten oder immer richtigen typ verwenden.
 
Werbung:
Ich glaube nicht das eine konvertierung von >4 Byte auf eine 1 Byte Zahl nur zum verlust der nachkommastellen führt (was ja eh geschieht da von gleitkommezahl zu ganzzahl konvertiert wird). Es führt auch zu einem Datenverlust innerhalb der ganzzahl (deswegen auch die warnung ;) ).
 
also ich hab es gelöst indem ich float benutze. und das zweite hat sich gelöst, indem ich einfach die logdatei auf einen externen datenträger schreiben lassen wollte und diesen vor der speicherung abgezogen habe.

eine weitere frage hab ich auch noch:
für delphi gibt es ja kylix. gibt es sowas für c++ auch? also etwas, das den c++ code auch für linux lauffähig macht.

liebe grüße,
n1ob
 
Zuletzt bearbeitet:
Werbung:
Ich glaube nicht das eine konvertierung von >4 Byte auf eine 1 Byte Zahl nur zum verlust der nachkommastellen führt (was ja eh geschieht da von gleitkommezahl zu ganzzahl konvertiert wird). Es führt auch zu einem Datenverlust innerhalb der ganzzahl (deswegen auch die warnung ;) ).
In der Warnung steht aber doch, dass er zu einem unsigned int konvertiert will.

eine weitere frage hab ich auch noch:
für delphi gibt es ja kylix. gibt es sowas für c++ auch? also etwas, das den c++ code auch für linux lauffähig macht.

liebe grüße,
n1ob
Solange du ISO-C++ schreibst sollte dein Source-Code auf allen möglichen Plattformen laufen.
 
In der Warnung steht aber doch, dass er zu einem unsigned int konvertiert will.

Wenn er es wirklich machen wollte hätte er es so geschrieben:
Code:
eq = (unsigned char)pow(z, zz);
Das hat er aber nicht. Und da C++ automatisch konvertiert ist der Compiler so nett und warnt ihn. Hätte er es so wie oben gemacht gäbe es keine warnung da der Entwickler es ja beabsichtigt...
 
mit dem ...dass er zu einem unsigned int konvertiert will. meinte ich den Compiler. Und da steht ja wohl eindeutig was von einem int und nicht char.
 
Werbung:
Also nochmal: Ich such das beste Anfänger C++ Buch auf der Welt, in deutscher Sprache. Welches könnt ihr mir empfehlen? :D
 
Werbung:
mich wunderts schon seit langem wie viele Leute in meinen treath geschreiben haben :)
@Prophet danke für die Büchertipps werde mir ein direkt Besorgen :)
 
Werbung:
Das Buch kann ich dir nur empfehlen. Hab es selber als Einstieg in das Thema genutz. Ist einfach alles wichtig super anschaulich erklärt und es wird eben gleich der Bogen zum Spiele programmierern geschlagen, d.h. die Beispielcodestücke, könnten so in einem Spiel vorkommen und am Ende wird ja auch ein ganzs Spiel mit der SDL programmiert.

FAZIT: Mit das beste Einsteigerbuch!

Schau dann am besten auch mal in diesem Forum vorbei (dass von Heiko Kalista [der Autor diese Buches] und David Scherfgen [hat auch ein sehr guten Buch geschrieben]): www.spieleprogrammierer.de/phpBB2

Viel Spaß bei C++ - spacegaier
 
Ok habs bestellt. Freu mich schon drauf. Frage: Was ist SDL? Noch was, wird im Buch auch erklärt wie man richtige Programme schreibt, die wie alle anderen ausgeführt werden, also nicht im Commander sondern so wie IE, Messenger usw. ???
 
Die SDL ist eine Bibliothek welche Grafik und Zeichenffunktionen bereitstellt.

Vermutlich schon. C++ wird eigentlich nicht interpretiert...
 
Werbung:
Wie meinste das genau?

Du wolltest wissen ob man damit Ausführbare dateien erstellen kann. Das ist bei C++ immer so weil es keine Interpreter für c++ gibt. Wenn du ein programm damit schreibst dann wird es auch nativ ausführbar sein ;)
 
Werbung:
Du wolltest wissen ob man damit Ausführbare dateien erstellen kann. Das ist bei C++ immer so weil es keine Interpreter für c++ gibt. Wenn du ein programm damit schreibst dann wird es auch nativ ausführbar sein ;)
Hab schon manche simple C++ Programme geschrieben. Die wurden im Commander ausgeführt, also nicht nativ. Aber das kommt sicher später :D
 
die programme sind insofern unabhängig, dass man sie auf jedem win32 rechner ausführen kann. das mit der befehlszeile ist ne andre sache.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben