Mein Compiler bringt bei Typumwandlung ohne casten keine Warnung



  • Kennt jemand das Problem?
    Ich benutze den MVC6 ich kann einfach so z.b. eine rechnung zwischen float und int machen. Ich brauche nicht zu casten da ja kein Fehler kommt 🙂 . Naja gut finde ich das aber nich da mein Compiler einfach Warnungen übergeht. Es ist auch völlig egal wie man die Sicherheitsstufe einstellt. Eine Neuinstallation hat auch nichts gebarcht.



  • Sollte er eine Warnung bringen? Sehe keinen Anlass dafür. Ist in Java auch nicht anders.



  • laut dem c++ Buch das ich hier in der Hand habe sollte eine Warnung kommen die so aussieht.

    warning C4244: '=' : Konvertierung von 'float' in 'int',
    möglicher Datenverlust



  • Facer schrieb:

    ich kann einfach so z.b. eine rechnung zwischen float und int machen

    Und? Wo ist das Problem? Warum sollte man zB 3 * 1,5 nicht "einfach so" berechnen lassen können?



  • Wie sieht denn dein Testcode aus?

    int foo = 42 + 3.12f;
    // oder
    float bar = 365 - 1,618f;
    


  • msdn:

    [Compiler Warning (level 1) C4244]

    "Variable": Konvertierung von "Typ" in "Typ", möglicher Datenverlust

    Sie haben einer Variablen vom Typ unsigned int einen Wert vom Typ __int64 zugewiesen. Möglicherweise ist ein Datenverlust aufgetreten.

    [Compiler Warning (levels 3 and 4) C4244]

    "Konvertierung": Konvertierung von "Typ1" in "Typ2", möglicher Datenverlust

    Ein ganzzahliger Typ wurde in einen kleineren ganzzahligen Typ konvertiert. Dies entspricht einer Warnung der Stufe 4, wenn Typ2 int und Typ1 kleiner als int ist. Andernfalls hat die Warnung die Stufe 3.

    C4244 kann auch auf der Stufe 1 ausgelöst werden; weitere Informationen finden Sie unter Compilerwarnung (Stufe 1).

    Die Konvertierung könnte durch implizite Konvertierungen ein Problem verursachen.

    Beispiel

    // C4244.cpp
    // compile with: /W4
    int main()
    {
    int b = 0, c = 0;
    short a = b + c; // C4244
    }
    Weitere Informationen finden Sie unter Usual Arithmetic Conversions (nur auf Englisch verfügbar).

    Michts mit floats. :p



  • Facer schrieb:

    laut dem c++ Buch das ich hier in der Hand habe sollte eine Warnung kommen die so aussieht.

    warning C4244: '=' : Konvertierung von 'float' in 'int',
    möglicher Datenverlust

    das tritt in deinem fall vermutlich nicht auf, weil einfach der int ohne verlust nach float konvertiert wird (wenn überhaupt), nicht umgekehrt.



  • Facer: um die Spekulationen zu beenden könntest Du einfach noch die Codezeile dazulieren, dann müßten wir die nicht erraten. 😉


Anmelden zum Antworten