我正在尝试使用数组保存rgba数据(0x00000000→0xFFFFFFFF),当我将值超过2,147,483,647溢出时,我假设因为某些可能的转换(可能是无符号→已签名).
这是我的代码:
int main(int argc, char* args[]) {
uint32_t *background = new uint32_t[1920*1080];
background[100] = 0xFF0000FF; //red, 4278190335
printf("%d, ", background[100]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
-16776961
Run Code Online (Sandbox Code Playgroud)
我仍然对C++有些新意,所以如果我忘记某些事情,请指出它.
哇我以为我知道我的C++,但这很奇怪
这个函数返回一个unsigned int所以我认为这意味着我永远不会得到一个负数返回吗?
该函数确定您前进或后退的时间.所以对我来说,我在澳大利亚,悉尼所以我是+10 GMT,这意味着我是UTC = LocalTime +( - 10).因此,GetTimeZoneInformation正确地确定我是-10.
但我的函数返回一个unsigned int所以不应该返回10而不是-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");
Run Code Online (Sandbox Code Playgroud)