我知道:"WORD: A 16-bit unsigned integer.
DWORD: 32-bit unsigned integer.".我发现在win32SDK程序中如果把WORD和DWORD全部换成int程序也能正常运行!那麽为什麽有时候一定要用DWORD?比如:"ar << (WORD)m_nPenWidth;",char和int也有这样的问题,我把TCHAR和UINT换成char和int也是可以的,我认为用DWORD和WORD无疑使程序变得难看,而且不容易理解,我的问题就是什麽情况下一定要用DWORD等而不能用int呢?现在的系统一般不都是32-bit的吗?请指点!我很想知道什麽情况下不能用int?
DWORD: 32-bit unsigned integer.".我发现在win32SDK程序中如果把WORD和DWORD全部换成int程序也能正常运行!那麽为什麽有时候一定要用DWORD?比如:"ar << (WORD)m_nPenWidth;",char和int也有这样的问题,我把TCHAR和UINT换成char和int也是可以的,我认为用DWORD和WORD无疑使程序变得难看,而且不容易理解,我的问题就是什麽情况下一定要用DWORD等而不能用int呢?现在的系统一般不都是32-bit的吗?请指点!我很想知道什麽情况下不能用int?
你需要确定数值的范围,然后再决定用什么类型。幸运的话你编程随便乱换都可以,不过一到实际使用环境中出了错你还坚持自己没错。
例如一个18bit的DWORD你换成WORD不就被截断了吗?
一个返回值返回DWORD,这个返回值比WORD的最大值还大。你用一个WORD的去接收会有什么后果?
WORD固定是2字节,DWORD固定是4字节。而int则不是,它随着操作系统的不同,可以有不一样的字节数。如在DOS和Windows 3.x等16位操作系统下,int是2字节;在Windows 9x/2000/xp下,它是4字节(这也是为什么你说换了没事的原因了)。
在序列化操作中,因为序列化是按照字节流存取的,为了保证不会错位,要求使用具有明确字节数目的数据类型。所以不能直接使用int,它必须经过转换才行。