Frage zu int und float !!



  • Ich benutze aus gewohnheit immer das lange static_cast.
    IMHO ist das auch etwas aussagekräftiger, denn wenn man zum Beispiel Zeiger casten will dann kann man das mit einem expliziten reinterpret_cast machen, dann sieht man es auch gleich. Für 'nen Standard-cast dann halt static_cast.



  • randa schrieb:

    Ich benutze aus gewohnheit immer das lange static_cast.
    IMHO ist das auch etwas aussagekräftiger, denn wenn man zum Beispiel Zeiger casten will dann kann man das mit einem expliziten reinterpret_cast machen, dann sieht man es auch gleich. Für 'nen Standard-cast dann halt static_cast.

    Aussagekraeftiger? Warum? Was ist an einem

    char* p = reinterpret_cast<char*>(some_pointer);
    

    aussagekraeftiger als bei einem

    char* p = (char*)some_pointer;
    

    ? Warum sollte man hier nicht gleich sehen, was gemeint ist?

    mfg
    v R



  • Ansichtssache. Ich sehe bei einem reinterpret_cast sofort, das es sich um einen expliziten Zeigercast handelt.
    Über solche sachen kann man schlecht diskutieren.
    Ich mache es halt so.



  • Ich muss sagen, ich finde

    char *p = reinterpret_cast<char*>(zeiger) + index;
    

    leichter verständlich als

    char *p = (char*) zeiger + index;
    

    Man sieht halt sofort, was genau gecastet wird.



  • Bin ich blind, oder warum sehe ich auf den ersten Blick trozdem das gleiche?

    mfg
    v R



  • Ist doch scheißegal. Eine Sache der Gewohnheit.



  • randa schrieb:

    Ist doch scheißegal. Eine Sache der Gewohnheit.

    Ok, trotzdem kein Grund, ausfallend zu werden, oder? (rhetorische Frage)

    mfg
    v R



  • Ich fand C-style casts zu Anfang verwirrend, weil ich mir nicht sicher war, ob (char*) p + i das selbe wie ((char*) p) + i oder (char*) (p + i) war. OK, inzwischen seh ich das auch auf den ersten Blick, aber bei c++-style casts ist es für meinen Geschmack offensichtlicher.



  • Ich schätze mal, das kommt drauf an, was man gelernt hat: ich habe ein C++-Buch, da wird nur mit "static_cast" gecastet, egal ob bei Rundungen oder sonstigem (Na gut, 🙄 "reinterpret_cast" natürlich auch, aber keine C-Casts!). Wenn nun jemand so C++ lernt, wird er auch so casten bzw. so gewöhnt sein, wobei die C'ler bei ihrem Cast bleiben (was ja schreibfauler :p ist... 😃 )



  • virtuell Realisticer schrieb:

    Aussagekraeftiger? Warum? Was ist an einem

    char* p = reinterpret_cast<char*>(some_pointer);
    

    aussagekraeftiger als bei einem

    char* p = (char*)some_pointer;
    

    ? Warum sollte man hier nicht gleich sehen, was gemeint ist?

    Was ist denn bei

    char* p = (char*)some_pointer;
    

    gemeint?

    some_pointer könnte ein gänzlich unverwandter Typ sein. Wenn es hier nicht gerade um char ginge, könnte es auch ein Zeiger auf eine Basisklasse sein. Vielleicht will der Programmierer aber auch nur einen const/volatile-Qualifizierer loswerden (warum auch immer). Vielleicht auch alles auf einmal. Dem C-Cast kannst du das nicht ansehen.



  • volkard schrieb:

    static_cast nehmen, wo man aufpassen muss. die langen _cast-wörte sind ja extra so lang, damit man sie ungern nimmt und damit sie als gefahrenkennzeichen leuchten

    Dann ist doch das Beispiel eigentlich wie gemacht für static_cast. Da int nicht den Wertebereich von float abdeckt, ist das doch eine nette Fehlerquelle, oder?
    Ich hab mir den functional-cast eigentlich abgewöhnt, da der afaik cv-Kennzeichner wegcastet. War das vielleicht etwas zu voreilig?


Anmelden zum Antworten