c++ - 在变量中存储多个值

标签 c++

我的问题标题不太准确,因为我不知道这个东西到底是怎么称呼的。

我不断看到 Win32 API 如何在变量中存储超过 1 个值。

例如,WPARAMLPARAM。它是一个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/

相关文章:

c++ - 检查2个字符串中是否有公共(public)子字符串c++

c++ - 'L' 在这里有什么意义?

c++ - 如何修复该程序中的错误以及为什么我会收到它?

C++ 模板 : 'is not derived from type'

c++ - 错误 LNK2005 已定义 - 运行后构建时出现编译器错误

c++ - 内存分配如何在指向 char 的双指针中工作

c++ - arduino c++ 中的继承问题

c++ - 如何创建boost phoenix make_shared?

c++ - 为什么我需要在成员初始化列表中重复我的基类的模板参数?

c++ - Qt - 从底部删除菜单?