我的问题标题不太准确,因为我不知道这个东西到底是怎么称呼的。
我不断看到 Win32 API 如何在变量中存储超过 1 个值。
例如,WPARAM
和LPARAM
。它是一个long
数字,被“分为”两个:高位字和低位字。
取 32 位值,将其除以 2 并将其设置为两个 16 位值时,还有更多示例。
我怎样才能自己设置一个变量呢? (创建一个变量,并将位划分为我需要的位数,并设置每个部分)
附言我问的主要是出于教育目的,所以即使你不建议我自己这样做,我仍然很感激你的回答。 谢谢。
最佳答案
有(至少)两种方法可以实现这一点:
使用移位/掩码运算符
<<
,>>
,&
和|
,像这样(只是一个例子,未经测试):int loWord = ...; int hiWord = ...; LPARAM param = (hiWord << 16) | loWord; ... loWord = param & 0xFFFF; hiWord = param >> 16;
使用
union
类型(尽管后一个受内存对齐和字节顺序问题的影响,因此它可能不是一个可移植的解决方案); see an example here .
关于c++ - 在变量中存储多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878501/