unsigned int (c++) vs uint (c#)

Folgenden ist der c# - code:

   static void Main(string[] args)
    {
        uint y = 12;
        int x = -2;
        if (x > y)
            Console.WriteLine("x is greater");
        else
            Console.WriteLine("y is greater");
    }

und diese ist c++ - code:

int _tmain(int argc, _TCHAR* argv[])
{
unsigned int y = 12;
int x = -2;
if(x>y)
    printf("x is greater");
else
    printf("y is greater");

return 0;
}

Beide geben unterschiedliche Ergebnis. Übersehe ich etwas grundlegendes? Irgendeine Idee?

  • mögliche Duplikate von Signed/unsigned-Vergleiche
  • Allgemeiner Tipp: Immer sicherstellen, dass beide Werte vom gleichen Typ für einen Vergleich
  • Diese Frage ist etwa, warum signed/unsigned-Vergleiche in C++ verursachen eine compiler-Warnung, wenn Sie den operator ist <, >, >=, oder <=, aber nicht, wenn der operator ==. Das ist eine ganz andere Frage, und seine Antwort hat sehr wenig Einfluss auf die Antwort auf diese ein.
Schreibe einen Kommentar