warning C4018: '<' : signed/unsigned mismatch



  • hi.

    ich habe hier diese warnung (siehe titel) in meinem programm (ziemlich oft), für folgenden code:

    for (i=0;i<las.size();i++)
    

    diese würde ich gerne beseitigen. ich hatte das mal so probiert:

    for (i=0;i<(int)las.size();i++)
    

    , da wurde mir aber gesagt, ich sollte keine "naked cast" benutzen.

    also wie mache ich es dann richtig?
    DANKE.
    STICK.



  • i mit dem gleichen unsigned Type wie der Return von .size() deklarieren.



  • Wenn 'las' ein Standard-Container (vector, set, map, string,...) ist, die geben Größenangaben als size_t heraus, also solltest du deine Zählervariablen auch als size_t definieren.

    (die Alternativen sind einfach: die Warnung unterdrücken durch einen Cast - oder die Warnung ignorieren (der Vergleich wird erst problematisch, wenn dein Container mehr als INT_MAX Elemente hat))


Anmelden zum Antworten