Fehlermeldung: conversion may lose significant digits



  • Hallo zusammen,

    nochmal kurze ne Frage zu der im Thema genannten Warnmeldung...

    Diese kommt, bei einer Übergabe von Parameter in einer Funktion bei mir, habe ich eine chance diese weg zubekommen. Es ist eine Übergabe von Short auf Short, nur bei der Übergabe addiere ich Shortwert mit einem definewert.

    Danke...



  • Normalerweise gibt es Schalter um derartige Wahrnugen Abzuschalten, dass hängt vom Compiler ab, poste doch mal das stück Code, nach deiner Schilederung stelle ich mir das in etwa so vor:
    [code type="C++" tabs="4"]
    #define const 3

    void foo(short n);

    int main()
    {
    short i
    ...
    foo (i+3)
    ...
    }
    [/code

    mfg
    -bg-



  • du solltest versuchen den Warnungen auf den Grund zu gehen, da du so leicht für merkwürdiges Verhalten in deinem Programm sorgen kannst.

    (Überlauf von Variablen hat schon einige Dinge sehr merkwürdig aussehen lassen 🙂

    http://www-aix.gsi.de/~giese/swr/ariane5.html 🙂

    oder fragte ich mich warum folgendes eine unendlich lange Schleife gibt 🙂

    byte i=0;
    for(;i<256;++i)
    {
      //...
    }
    

    )



  • Diese Warnmeldung kommt beim VC leider auch ohne Grund.

    void foo(short n);
    
    int main()
    {
    short i;
    ...
    foo (i | 3); // garantiert kein Überlauf
    ...
    }
    

    Abhilfe ohne cast und ohne Abschalten der Warnung:

    int main()
    {
    short i;
    short dummy;
    ...
    foo (dummy = (i | 3));
    ...
    }
    

Anmelden zum Antworten