An die Programmierer

  • An unsere ITler hier.



    Ich hab ein echtes Problem und bin für Hilfestellung echt dankbar.
    Ich schreib nächste Woche meine Klausur in C.
    Mit den Grundlegenden Sachen aller Schleifen, Funktionen, Arrays, Pointer etc. komm ich klar, auch wenn ich nie ein C Freak werden werde^^
    Also alles was man aus C++ bzw objektorientierter Programmierung übernehmen kann :P
    Aber ich hab ein echtes Problem mit den Dateitypen und deren cascadierung bzw. Typenkonvertierung bei Aus- und Übergabe.


    Hat wer ne gute Lektüre, Internetseite oder ähnliches die das gut erklärt?
    Denn das ist das Elementarste überhaupt und wenn ich das nicht endlich auf die Pfanne bekomme, brauch ich noch nicht mal darüber nachdenken die Klausur zu schreiben.


    Für Tips wär ich dankbar. Und bitte erspart euch den verweis auf Google. Das hab ich selbstverständlich schon mehr als einfach bemüht.
    Ich hab diverse Skripte verschiedenster Unis/FH´s durch, Internetseiten und Foren. Aber es hat einfach echt noch nicht klick gemacht.


    Danke schon mal.

  • So schlecht es sich anhört aber ich denke, da können wir dir kaum helfen, da jeder eine andere Methode besser findet und damit besser lernen kann. Am besten googlest du noch ein wenig weiter und evtl findest du dann etwas, dass dir hilft das gut und vor allem relativ schnell zu verstehen ;)


    Viel Glück nächste woche :)

  • Viel Glück nächste woche :)

    Vielen Dank für das gewünschte Glück. Aber den rest des Beitrags hättest dir auch echt sparen können. Denn...

    Und bitte erspart euch den verweis auf Google. Das hab ich selbstverständlich schon mehr als einfach bemüht.
    Ich hab diverse Skripte verschiedenster Unis/FH´s durch, Internetseiten und Foren. Aber es hat einfach echt noch nicht klick gemacht.

    Ich wollte auch keine Tips wie man Lernt oder sonst was. Ich hab nach nem konkreten Tip gefragt was ein spezielles Thema angeht. Google und Co bemühe ich seit Tagen.
    Mag sein das ich jetzt etwas bis mittelschwer Zickig reagiere, aber sinnlos Beitrag....


    Edit: Um einer etwaigen Diskussion hier vor zu greifen. Ich weiss das ich hier in einem Auto-Forum bin. Und das, wenn überhaupt, mir hier nur sehr wenige bis gar keiner helfen kann.
    Aber fragen kann man ja mal, gibt ja genug Spezies hier die sich schon ganz andere Sachen angeeignet haben.


  • Was ich damit meinte mit Google und co. ist es, dass es hier bestimmt einige darunter dani gibt die es dir erklären könnten, ich könnte es auch versuchen auch wenn ich im erklären schlecht bin allerdings ist eher die Frage ob du es besser verstehst wenn wir es versuchen zu erklären :D


    Das mit Google sollte nicht angreifend sein oder so ;)

  • Aber ich hab ein echtes Problem mit den Dateitypen und deren cascadierung bzw. Typenkonvertierung bei Aus- und Übergabe.


    Was ist das Problem dabei? Es gibt ja im Prinzip nur zwei Arten von Datentypen (Ganze Zahlen und Gleitkommazahlen) und davon gibt es unterschiedliche "Größen". Die Typumwandlung folgt festen Regeln, das findet man in einer Sekunde...

  • Was ist das Problem dabei? Es gibt ja im Prinzip nur zwei Arten von Datentypen (Ganze Zahlen und Gleitkommazahlen) und davon gibt es unterschiedliche "Größen". Die Typumwandlung folgt festen Regeln, das findet man in einer Sekunde...

    Natürlich kenn ich diese Regeln. Aber hab hier ein schönes Beispiel, was ich einfach nicht verstehen will/kann.
    float fFloat;
    int iInteger = 3;
    .....


    fFloat = 32.48
    iInteger *= (int) fFloat;
    /* ohne Cast würde erst das Ergebnis der Multiplikation
    * in den Typ int umgewandelt, iInteger würde daher der
    * Wert 97 zugewiesen. So erhält iInteger aber den Wert 96
    * weil fFloat schon vor der Multiplikation in int
    * konvertiert wird!
    */
    Ich raff es nicht. Vielleicht bin ich auch einfach zu blöd.


  • int iInteger = 3;
    fFloat = 32.48
    iInteger *= (int) fFloat;


    sehr schönes beispiel. mit dem typecast, also das (int) reißt du dem fFloat einfach alles ab dem Komma weg - da wird IMMER abgerundet (WICHTIG!).
    also steht da:
    iInteger *= 32;
    oder eben etwas ausführlicher:
    iInteger = iInteger * 32;
    und das gibt 96.


    Ohne den typecast bin ich mir grad gar nicht sicher, ob er da überhaupt was sinnvolles rechnet, dachte eigentlich dass er versucht, den float aus dem speicher als int auszulesen und somit quatsch rauskommt - dem kommentar nach macht er aber im prinzip folgendes:
    iInteger *= fFloat;
    wieder etwas ausführlicher:
    iInteger = iInteger * fFloat;
    bedeutet:
    iInteger = 3 * 32.48;
    und das würde 97,44 ergeben. Int kann aber nur Ganzzahlen speichern, das heißt: alles ab dem Komma wird weggeschnitten und somit ergibt es 97...


    Ich könnte dir noch mit meinem Script C aus dem letzten Semester dienen - vielleicht hilfts dir ja weiter.
    Schick mir deine Mailadresse mal per PN, dann lass ichs dir zukommen :)


    Viele Grüße,
    Valentin

    Viele Grüße,


    Valentin


    Mein Nachbar hat sich nen Polo mit 3-Zylinder Motor zugelegt. Weil der so sparsam sein soll.
    Aus dem Grund fahr ich nen 6-Zylinder - da spar ich gleich doppelt!

  • Ja richtig lesen hilft. :thumbsup: Danke dir. Jetzt bin ich schon mal ein Stück weiter. Irgendwie hab ich den cast des Floats nicht richtig gelesen oder ignoriert, keine Ahnung.
    Und natürlich ist
    iInteger *= (int) fFloat;
    nichts anderes wie
    iInteger = iInteger * (int) fFloat;


    Boah ich glaube, ich sollte mal einen Tag pause machen oder was anderes Lernen. Ich danke dir jedenfalls bei dem konkreten Beispiel.