UINT One = 1;
LONG mylong = LONG(-1) * One;
LONGLONG mylonglong1 = LONG(-1) * One;
LONGLONG mylonglong2 = LONG(LONG(-1) * One);
保存在mylong
,mylonglong1
和mylonglong2
中的值是多少?从int到longlong的危险转换:没有警告?
mylong = 0xffffffff (ok)
mylonglong1 = 0x00000000ffffffff (why?)
mylonglong2 = 0xffffffffffffffff (ok)
我真的很惊讶地知道的mylonglong1
的结果,更惊讶的是,没有编译警告。
为什么将LONG分配给LONGLONG导致左填充为零?
到底发生在一个项目中使用函数CFile的一个问题:: SEEK()
virtual LONG Seek(LONG lOff, UINT nFrom);
定义如下:https://msdn.microsoft.com/en-us/library/aa270542(v=vs.60).aspx 迁移到
virtual ULONGLONG Seek(LONGLONG lOff, UINT nFrom);
这里定义https://msdn.microsoft.com/library/b2eb5757-d499-4e67-b044-dd7d1abaa0f8.aspx#cfile__seek
迁移后不长呃工作,因为lOff
的参数转换没有给出预期的结果。
你把SO与猜谜游戏网站混淆了吗?要知道答案,可以简单地运行代码并打印值,不是吗? – user463035818
使用调试器来运行它有什么好处? – George
由于大家都在抱怨问题的格式,而不是我重写的内容。希望它能够更好地适应现在的格式,并且会吸引正常的答案。 – CompuChip