g++: 0, 1 sind _signed_ int?



  • Beim g++ scheinen 0 und 1 signed int zu sein. Kann man das auch umstellen? Welchen Grund hat das?
    In der Dokumentation habe ich nichts gefunden.



  • Nach dem ISO-C++ Standard sind alle Integers (soweit mit unsigned nicht anders angegeben) signed. Da 0 und 1 integers sind, sind sie eben signed. Wennn du willt, dass sie unsigned sind, musst du (unsigned int) davor schreiben;



  • aeiou schrieb:

    Nach dem ISO-C++ Standard sind alle Integers (soweit mit unsigned nicht anders angegeben) signed.

    Schade.

    Wennn du willt, dass sie unsigned sind, musst du (unsigned int) davor schreiben;

    Im Moment steht da (besser)

    static_cast<unsigned int>(0)
    // bzw.
    const unsigned int _0 = static_cast<unsigned int>(0); // ja, _0 ist in einem Namespace!
    _0
    


  • Ist eine Umwandlung signed/unsigned bei neuen Compilern nicht mehr implizit? 🙄



  • Was soll das? Welches Problem löst das, für (unsigned)0 eine Konstante zu definieren? BTW könntest du auch einfach 0u schreiben (das C-Wissen geht vor lauter C++-Geilheit manchmal verloren gell 😉 ), aber das hab ich ehrlich gesagt noch nie gebraucht.



  • cd9000 schrieb:

    Ist eine Umwandlung signed/unsigned bei neuen Compilern nicht mehr implizit? 🙄

    Doch, aber ich habe ein komplexes Operatorenüberladungs- und nicht-explizite-Konstruktoren-System. 🤡

    Bashar schrieb:

    BTW könntest du auch einfach 0u schreiben (das C-Wissen geht vor lauter C++-Geilheit manchmal verloren gell 😉 )

    Platsch. Danke.


Anmelden zum Antworten