C-Programming - Teil 2 In dem 1. Tut haben wir uns ausschließlich mit dem Variablentyp int beschäftigt. Da der Variablentyp int aber nicht der einzigste Variablentyp ist (siehe Tabelle Tut 1) wird es zeit sich mit weiteren Datentypen zu beschäftigen. Wir werden uns in diesem Tut den Typ float und double etwas genauer anschauen. Sehen wir uns zuerst mal den Typ float an: Am einfachsten lässt sich der Typ anhand eines Programms erklären. Deswegen jetzt ein kleines Programm. #include void main() { float v1, v2, v3, v4, v5, v5, v6; v1=1.0; v2=-1.0; v3=1234567890.1234567890; v4=12345678901234567890.0; v5=10; v6=-10; printf("\n\t"); printf("\t v1 = %e\n",v1); printf("\t v2 = %e\n",v2); printf("\t v3 = %e\n",v3); printf("\t v4 = %e\n",v4); printf("\t v5 = %e\n",v5); pritnf("\t v6 = %e\n",v6); printf("\n\n\n"); } Bildschirmausgabe müsste folgendermaßen aussehen: v1 = 1.000000e+00 v1 = 1.000000e+000 v2 = -1.000000e+00 v2 = -1.000000e+000 v3 = 1.234568e+09 v3 = 1.234568e+009 v4 = 1.234568e+19 oder v4 = 1.234568e+019 v5 = 1.000000e+01 v5 = 1.000000e+001 v6 = -1.000000e+01 v6 = -1.000000e+001 Nun zur Erklärung des oben beschriebenen Programms: Was für uns neu sein dürfte wäre die 3. Zeile void main(). Der Typ void bedeutet eigentlich nichts anderes wie "nichts". Das void vor der Funktion main() setzen wir nur, da die Funktione keinen Rückgabewert liefern soll. In Zeile 5 werden nun nacheinander 6 Variablen vom Typ float deklariert. Wir ihr seht kann man mehrere Variablen eines Typs in einer Zeile deklarieren man muss sie nur durch ein Komma voneinander trennen. Bei der Ausgabe mittels der Funktion printf() muss beachtet werden das nun anstatt %d hier %e geschrieben wirde. Das %e sagt dem Compiler das es sich hier um eine Gleitpunktzahl handelt. An dieser Stelle muss vielleicht noch erwähnt werden das man beim ausgeben von Werten beim Typ float 7 signifikante Stellen erhält. Das heißt, das man die zurückgelieferten Werte bis zur 7. Stellen nach dem Punkt zum weiteren Rechnen benutzen kann. Weitere Stellen nach hinten werten die Werte ungenau und nicht exakt. Schauen wir uns nun die Ausgabe etwas genauer an. Der Aufbau einer Gleitpunktzahl hat also folgenden Aufbau: Bsp 1: Mantise Exponent 1.000000 e+00 Sehen wir uns nun eine weiteres Ausgabeformat an. Die Festpunktzahl ( %f ) Hierzu jetzt nur ein kleines Programm zur Demonstration. #include void main() { float v1 = 0.0049; printf("\n\n"); printf("\n\t v1 = %10.2f",v1); /* Ausgeben des zugewiesenen Zahl */ printf("\n\n"); } Erläuterung: In der 5. Zeile wird eine Variable ( v1 ) vom Typ float deklariert und ihr der Wert 0.0049 zugewiesen. In der 8. Zeile nun erfolgt die Ausgabe der Zahl. Zu beachten sei das man hier %f schreibt und nicht %e. Die 10 nach dem % sagt aus das die Zahl maximal 10 Stellenlang ausgeben wird. Der 2 hinter dem Punkt gibt an wie viele Nachkommastellen die Zahl erhalten soll. In unserem Beispiel als 2 Stellen nach dem Komma ( Beim Programmieren der Punkt ). Alles was nun zwischen /* und */ steht stellt in C einen Kommentar dar und wird deshalb vom Compiler ignoriert. Er dient hier lediglich zur Erklärung des Vorgangs. Mit dem Typ float sollten wir uns nun einigermaßen auskennen. Es wird also zeit sich einen weiteren Datentyp anzuschauen. Der neue Datentyp nennt sich double und er reserviert im Speicher 8 Byte. Mit ihm können ebenfalls Zahlen mit Kommastellen ( Punkt ) ausgegeben werden. Er ist aber außerdem in der lage größere Werte zu speichern als der Typ float. Eine weitere Eigenschaft ist das double nicht 7 sondern 15 signifikant Zahlen ausgibt. Ich glaube das dafür nun kein extra Programm notwendig ist. Um den Typ double zu benutzen tauscht ihr bei der deklaration einfach den Typ float gegen den Typ double aus. (double v1 = 0.0049; ) Ok ich hoffe ihr konntet wieder einiges lernen und schaut auch bei den nächsten Tuts wieder rein. Das nächste mal werden wir uns mit Kontrollstrukturen beschäftigen. Mit hilfe von Konstrollstrukturen kann man den Ablauf eines Programmes kontrollieren bzw. beeinflußen. Mehr dazu aber im nächsten Tut. Wenn ihr irgendwelche Verbesserungsvorschläge, Kritiken oder auch nur ne Frage habt, schreibt an die bekannte Adresse: nitro_ggg@gmx.de