PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c und typen



barton4
31-05-2006, 16:55
Ich fange garead an mich etwas mit c zu beschäftigen an, habe aber schon erfahrung in anderen sprachen
Irgendwie gibt mein c programm komsiche zahlen aus wenn ich eine float variable durch eine
int teile.
Gibt es da wie bei Delphi funktionen zum umwandeln?

barton4
31-05-2006, 17:06
sorry hat sich schon erledigt es lag nu an der ausgabe %d
%f hat es richtig gestellt

peschmae
31-05-2006, 17:35
*ggg

Da kann ich mir allerdings vorstellen dass das merkwürdig aussieht. Hatte ich auch mal - seither weiss ichs. :)

Gutes Beispiel wofür Typsicherheit (die C halt nicht so bietet) gut ist ;)

MfG Peschmä

Boron
31-05-2006, 18:39
@barton4
Immer mit der Option -Wall übersetzen.
So werden alle möglichen Warnungen ausgegeben. Z.B auch welche bei nicht ganz koscheren Typecasts.

(Versuche zusätzlich mal -ansi -pedantic :))

Thomas Engelke
01-06-2006, 14:45
Optional funktioniert bei Compilern aus den 70ern auch die Option -anotherBrick.

TME

barton4
01-06-2006, 16:02
danke für die guten idden...........


hab noch eine kleine Frage (so klein das ich nicht extra ein neuen thread anfangen will)
und zwar will ich zahlen runden in c. Hab die math.h eingebunden. Hab gelesen das in dieser biblio eine Funktion ceilf() geben soll, die float rundet.

Leider sagt der compiler undefined reference (denk mal das heist das sie nicht vorhanden ist)

peschmae
01-06-2006, 18:27
Ich denke mal du vergisst die Libmath zu linken. Das muss man dem Compiler explizit angeben:


gcc -blabla -Wall -lm

Alternativmethode für den Fall dass du nachher eh Ints brauchst:


float f = 3.12;
int i = (int) (f + 0.5)


MfG Peschmä

Boron
01-06-2006, 18:28
Nicht der Compiler sagt dir "undefined reference", sondern der Linker.
Du musst dem Linker noch die Option -lm mitgeben, dass er die Mathebibliothek auch dazu linkt.

Der Compiler findet die Funktion schon. Nämlich in der math.h.
Aber wenn der Linker versucht in deinem Code die Adresse der Funktion ceilf() einzusetzen weiß er nicht woher er die nehmen soll weil er nicht weiß, dass er die Mathelib auch beim Linken berücksichtigen soll.

barton4
02-06-2006, 13:19
danke das war es,jetz gehts :-)