Nächstes Problem =/



  • Blödes Tutorial.
    Mit typedef kannst du einem Typ einen neuen Namen geben.
    Das funktioniert so:

    typedef int number;
    

    Ab jetzt könnte man überall number schreiben, wo man auch int schreiben könnte. Vielleicht hilft dir das ja bei deinem Code weiter 😉


  • Mod

    Die Aufgabe möchte so etwas wie

    #ifdef KUHNIX
    #define DATENTYP long
    #endif
    

    Und dann benutzt du überall DATENTYP.

    Ganz schlechter Stil, wie bei vielen Online-Tutorials.



  • Ich werd dann auch mal die gestellte Frage beantworten...

    Hyrsch schrieb:

    Bei aktivem (und fiktiven) System "Luxus" kommt das Programm immer durcheinander wenn man höhere Zahlen eintippt.

    Gibt es evtl Lösungen?

    Nein. Die Eingabefunktion für char (d.h. die entsprechende Überladung von operator<<) interpretiert die Eingabe als Zeichen, nicht als Zahl. Wenn du eine Zahl einlesen willst, dann nimm einen Zahltypen, wie short, int oder long.
    Achso, auf Luxus gibts ja nur char -- die Prämisse ist komplett hirnrissig! Es gibt keine C++-Implementation, die nur char hat, es müssen immer alle Datentypen vorhanden sein. Solche Aufgaben zu lösen lehrt dich nichts, das ist reine Zeitverschwendung.
    Übrigens solltest du dir abgewöhnen, doppelte Unterstriche um Makros oder sonstige Bezeichner zu setzen. Doppelte Unterstriche sind der Implementation vorbehalten, führende Untstriche vor Großbuchstaben ebenfalls, und noch einige andere Fälle. Bei Kuhnix wird es da voraussichtlich keine Probleme geben, aber wenn du das immer so machst, gibt es früher oder später eine Kollision, die du vielleicht nichtmal bemerkst.



  • Was wäre ein "guter Stil" so ein Programm zu schreiben?

    Quellcode würde mich interessieren falls du Zeit hast einen zu coden.



  • Die doppelten Unterstriche habe ich nur verwendet da im Tutorial steht es gehöre zu Betriebssystemen. Das die Zeichenfolge somit reserviert ist ist damit ja klar, sonst wären ja keine Fantasienamen nötig.



  • da im Tutorial steht es gehöre zu Betriebssystemen

    Vom Betriebssystem wirst normalerweisse nicht viel sehen, weil der "Compiler" immer dazwischensitzt. Und erst recht bist du nicht der "Richtige" der Betriebssystem-Definitionen erzeugen sollte 🙂
    Also lass das einfach mit den Unterstrichen 🙂

    Die Eingabefunktion für char (d.h. die entsprechende Überladung von operator<<) interpretiert die Eingabe als Zeichen, nicht als Zahl.

    Richtig.
    Und genau deshalb sollte ein System nur funktionieren, wenn es datentypen fuer Zeichen und Integer zur Verfuegung stellt. Sonst funktionieren diese Operatoren gar nicht.
    also muss es neben char noch sowas wie "int8" geben, fuer den die Streamoperatoren entsprechend überladen sind, das sie als ints funktionieren.

    Was wäre ein "guter Stil" so ein Programm zu schreiben?

    Die Aufgabenstellung ist fiktiv ...
    Normal bietet jedes system (compiler auf entsprechenden Betriebssystem) entsprechende Datentypen an. Dabei gibt es folgende Kategorien:

    Sprachstandard: Datentypen die der C / C++ Standard in deinem Fall vorschreibt. Beispiel: int short char

    Betriebssystem: Datentypen die von der API zum Betriebssystem(WinAPI, Posix, SystemV) "vorgeschrieben" werden und vom Compiler entsprechend auf die richtigen internen typen umgesetzt werden.
    Beispiel: WORD DWORD __int8 time_t thread_t

    3d Party Libs: Von Bibliotheken die auf mehreren Plattformen zur verfuegung stehen, werden oft auch datentypen definiert, wo garentiert wird das die auf allen plattformen sich gleich verhalten, evtl die gleiche groesse haben.
    Beispiel: (Qt) qint32, qint64 ...

    Fazit: Die Aufgabenstellung ist ... naja zweifelhaft.

    Ich glaub man will Dir nur die Verwendung von typedef näherbringen, nur ist das Aufgabenstellung halt bescheuert gewaehlt 😃

    Ciao ...


  • Mod

    Hyrsch schrieb:

    Was wäre ein "guter Stil" so ein Programm zu schreiben?

    Ein großer Schritt vorwärts wäre ein typedef anstatt des hier anscheinend gefragten define.



  • Quelle: http://www.c-howto.de/tutorial-strukturierte-datentypen-strukturen-struct-synonyme-typedef.html

    Mit typedef können wir neue Datentyp-Namen entwerfen, was in Verbindung mit Strukturen Arbeit sparen kann. Folgendes Beispiel erstellt ein Synonym Integer für den Datentyp int. Danach können wir Integer exakt wie das Schlüsselwort int behandeln.

    typedef int Integer;
    float preis = 3.99;
    Integer zahl;
    zahl = (Integer) preis;
    printf("Integer-Zahl: %d\n", zahl);
    
    Integer-Zahl: 3
    

    Beim Erstellen von Struktur-Objekten ist immer das Schlüsselwort struct notwendig. Mit typedef können wir jedoch einen neuen Datentyp für eine Struktur erstellen, sodass das Erstellen von Objekten einfacher wird. Hierbei beginnt die Deklaration der Struktur mit typedef struct und der Name wird nicht mehr an den Anfang geschrieben, sondern zwischen Blockende und Strichpunkt. Danach kann man lediglich mit dem Namen der Struktur neue Objekte erzeugen.

    typedef struct {
    	char name[50];
    	int alter;
    }person;
    
    // Objekte erstellen
    person kurt, dieter, antonia;
    

    314159265358979 schrieb:

    Habt ihr denn noch nicht typedef gelernt?

    Das ist in dieser Stufe zu Hardcore. 😃


  • Mod

    Na, ob Zitate aus einem C-Tutorial hier so gut passen? Der zweite Teil ist in C++ zwar technisch möglich aber ziemlich überflüssig.



  • Der Post mit dem C-Tutorial hilft mir nicht viel weiter da ich keine lust hab 2 Sprachen parallel zu lernen (Syntax is in C ein wenig anders^^).

    Ich bin schon dabei mich in typedef einzuarbeiten vielen Dank für den Tipp 🙂



  • Hyrsch schrieb:

    Was wäre ein "guter Stil" so ein Programm zu schreiben?

    Es sein zu lassen. Das Tutorial was du da durcharbeitest ist offenbar ziemlich dämlich (versucht in so einem frühen Stadium, dich Implementierungen für nicht standardkonfomre Umgebungen programmieren zu lassen) und falsch aufgebaut (Abgesehen von include-guards braucht in deinem Lernstadium keiner #ifdef und Co, schon garnicht bevor du typedefs kennst).

    Mein Tip: Lass das Tutorial links liegen und beschäftige dich mit einem ordentlichen Buch.



  • Ich glaube hier sind die Leute schnell gereizt sobald man mal mit C statt C++ kommt 😉


Anmelden zum Antworten