Javas byte in C++(11) - ein char-Wrapper



  • Wofür genau soll das gut sein? Wieso benutzt du nicht einfach signed bzw. unsigned char?



  • dot schrieb:

    Wofür genau soll das gut sein? Wieso benutzt du nicht einfach signed bzw. unsigned char?

    Das ist doch nicht der Punkt! Es war nur zum Spaß (weil ich nix zu tun hab), und ich wollte wissen ob das so geht und ob es richtig Programmiert wurde.

    Shade's Vorschlag war hilfreich. Der Input ist also nicht äquivalent, daran muss ich also noch pfeilen.

    Mit "Problem" hat das nix zu tun. Ich würde nie im Leben in einem richtigen Projekt sowas benötigen, geschweige benutzen.
    😃

    Verdammt nochmal, Leute, es sind Sommerferien und ich hab einfach nix zum Programmieren. Ich könnte locker 10 Stunden am Tag dafür nehmen. Aber ich weiß nicht wofür. ➡ 😞 ➡ 💡 ➡ ⚠



  • Man kann sich kaum mehr vorstellen, wie sich meine Generation vor 35 Jahren in den Sommerferien gelangweilt haben muss ...



  • Gibt es denn tatsächlich nichts, was dich interessiert, was du dir immer schonmal anschauen wolltest oder was du immer schonmal machen wolltest?



  • Ich könnte ein Praktikum in einer SE-Firma machen, das wär doch was. Kennt da jemand eine gute (Hamburg)?



  • Fällt dir ja früh' ein ...

    Ne, schreib' lieber weiterhin Code, den die Welt nicht braucht. 👍 🤡



  • Projektideen gibt es wie Sand am mehr. Z.b. billige Webkam kaufen und und auf das Aquarium richten. Bewegung der Fische verfolgen lassen. Alternativ auf die Strasse richten und Autos tracken. Idee stammt nicht von mir, das Thema kam hier im Forum mal auf.

    Alternativ Handgestenerkennenung, oder erstmal bis zum Punkt: Livestream einlesen, Hand und Fingerkuppen extrahieren, etc. ....



  • Ich finde auch, dass nicht deutlich rauskommt (abgesehen vom Spaßfaktor), warum du das gemacht hast.

    Hacker schrieb:

    Ist der Code vollständig standardkonform (bspw. der reinterpret_cast)?

    Sieht auf den ersten Blick falsch aus. Der interessante Teil ist doch:

    signed char some_byte;
    some_inputstream >> reinterpret_cast<short&>(some_byte);
    

    bzw

    unsigned char some_byte;
    some_inputstream >> reinterpret_cast<unsigned short&>(some_byte);
    

    Erklär mal, wie kommst du drauf, dass das okay wäre. Du versaust dir hier ja den automatischen Speicher, da sizeof(char) typischerweise kleiner als sizeof(short) ist.

    Ich denke, du wolltest eher so etwas schreiben:

    int value;
    some_inputstream >> value;
    if (value<SCHAR_MIN || value>SCHAR_MAX) {
      Überlauf irgendwie abfangen/signalisieren
      da die Zuweisung im else-Teil sonst UB hervorrufen würde
    } else {
      signed char some_byte = value;
      ...
    }
    


  • Es geht ihm darum dass beim "Rausschiften" eines char/signed char/unsigned char mit Wert 50 nicht 50 am Schirm steht sondern irgend ein blöder Buchstabe.

    Ich finde das übrigens auch immer wieder sehr bekloppt, vor allem weil es auch signed char und unsigned char betrifft.
    Fragt man sich wozu es char dann überhaupt als 3. Typen gibt.



  • Das einfachste dürfte wohl sein, die Operatoren selbst für signed char und unsigned char zu überladen. Ich glaube, die sind laut Standard nicht definiert.



  • Kellerautomat schrieb:

    Das einfachste dürfte wohl sein, die Operatoren selbst für signed char und unsigned char zu überladen. Ich glaube, die sind laut Standard nicht definiert.

    Leider doch. 27.6.1.2.3§10, 27.6.2.5.4 (C++98)



  • Hacker schrieb:

    Verdammt nochmal, Leute, es sind Sommerferien und ich hab einfach nix zum Programmieren. Ich könnte locker 10 Stunden am Tag dafür nehmen. Aber ich weiß nicht wofür. ➡ 😞 ➡ 💡 ➡ ⚠

    renn 200km



  • Sollte das nicht per manipulator lösbar sein?



  • Das ist mit static_cast<int> lösbar.



  • Bashar schrieb:

    Leider doch. 27.6.1.2.3§10, 27.6.2.5.4 (C++98)

    Dann dürfte das hier doch eigentlich nicht kompilieren, oder? http://ideone.com/aU6po



  • Wieso sollte das nicht kompilieren? Das tut genau das, was es laut Standard soll (char, signed char und unsigned char sind verschiedene Typen)...



  • Mehrfachdefinition und so...



  • Wo siehst du da eine Mehrfachdefinition? Deine operator << liegen im global Namespace...



  • Kellerautomat schrieb:

    Ich glaube, die sind laut Standard nicht definiert.

    ->

    Bashar schrieb:

    Leider doch. 27.6.1.2.3§10, 27.6.2.5.4 (C++98)



  • Die sind aber im namespace std...


Anmelden zum Antworten