在Xplorer中编译运行:
int64_t mask = 0xffffffffffffffffLL;
if((j+64)>width)
{
printf("%x %d ",mask,j);
}
输出的结果为:60da5e90 -1
应该使用printf("%llx %d ",mask,j);
则输出正确结果:ffffffffffffffff 768
如果使用printf("%x j:%x j2:%x j3:%x ",mask,j,j,j);测试输出:60047b00 j:ffffffff j2:ffffffff j3:300
0x300刚好是768,说明mask输出的是缓冲区的随机值,随机值之后存的是mask,j,j,j
j j2打印了mask的值,j3才输出了第一个j
另外int64_t初始化最好附上LL后缀