Funktion vom Typ unsigned int zurück negative Zahl

Wow, ich dachte, ich wusste, dass mein C++, aber das ist seltsam,

Diese Funktion gibt einen unsigned int, also ich dachte, dass bedeutet ich werde nie eine negative Zahl zurückgegeben, richtig?

Die Funktion bestimmt, nach wie vielen Stunden vor oder hinter der UTC Sie sind. Also für mich ich bin in Australien, Sydney, so bin ich +10 GMT, was bedeutet, ich bin UTC = LocalTime + (-10). Daher die GetTimeZoneInformation richtig bestimmt, ich bin -10.

ABER meine Funktion gibt einen unsigned int, also sollte es nicht Rückkehr 10 nicht -10?

unsigned int getTimeZoneBias()
{
    TIME_ZONE_INFORMATION tzInfo;
    DWORD res  = GetTimeZoneInformation( &tzInfo );

    if ( res == TIME_ZONE_ID_INVALID )
    {
        return (INT_MAX/2); 
    }

    return (unsigned int(tzInfo.Bias / 60));  //convert from minutes to hours         
}

TCHAR ch[200];
_stprintf( ch, _T("A: %d\n"), getTimeZoneBias()); //this prints out A: -10
debugLog += _T("Bias: ") + tstring(ch) + _T("\r\n");
  • Teil des Problems ist, dass der Druck unsigned erfordert %u, in diesem Fall ist es ein Duplikat von diese Frage, aber es gibt eine Menge mehr hier Probleme mit dem Gießen hin und her, int & unsigned.
InformationsquelleAutor user593747 | 2011-10-01
Schreibe einen Kommentar