Frage zu C# Sprachdetails und Buchempfehlung



  • Hallo zusammen,

    ich habe mich entschlossen C# zu programmieren um einfach Window-Anwendungen programmieren zu können und habe bereits C/C++ Kentnnisse. Meine Wahl fiel zum Lernen auf das Galileo-openbook da es sich nicht lange mit Grundlagen der Programmierung aufhält und Einblicke in einige Bibliotheken verschafft. Dabei kann es natürlich nicht so detailliert sein wie der Standard.

    Nun fand ich es ganz interessant die Sprachdetails in C zu kennen, zum Beispiel die Regeln beim Rechnen mit unsigned, die (nicht vorhandene) Auswertungsreihenfolge in Ausdrücken oder was passiert wenn ich ein 0-Bit-Feld in eine Struktur einbaue. Allerdings hoffte ich bei C# nicht auf Derartiges zu treffen 🙂 .

    Nun zu meiner Frage. Folgendes kann ich mir nicht erklären:

    byte a = (short)43; // Fehler
    byte b = (int)43; // kein Fehler
    byte c = (long)43; // Fehler
    

    Solches Wissen ist natürlich nicht essentiell bei der Programmierung - aber interessant und erklärt oft wie eine Sprache implementiert ist 🙂 . Gibt es für C# eine Rationale zum Standard? Und wie genau hält sich die MS-Implementierung an den Standard?

    Nachtrag: Ich vergaß die Buchempfehlung. Also statt einer Rationalen wäre mir ein Buch noch lieber.

    MfG Tobi.



  • Willkommen im Club C# und .NET. Grundsätzlich findet sich für Umsteiger von C oder C++ alles wieder, nur etwas anders.

    Buchempfehlung hier: http://www.c-plusplus.net/forum/313049



  • Die Buchempfehlungen hab' ich schon durchgesehen. Aber ich suche eher etwas wie die C FAQ.



  • 43 ist ein Integerliteral und das gleiche wie (int)43.

    Man möchte natürlich schreiben können
    byte b = 43;
    ohne jedesmal casten zu müssen:
    byte b = (byte)43;

    Das sollte es erklären.


Anmelden zum Antworten