gpt4 book ai didi

c++ - 为什么我不能将这些整数打包在一起?

转载 作者:行者123 更新时间:2023-11-27 23:51:21 25 4
gpt4 key购买 nike

我有以下代码。目标是将两个 uint32_t 组合成一个 uint64_t,然后检索值。

#include <iostream>
#include <cstdint>

int main()
{
uint32_t first = 5;
uint32_t second = 6;

uint64_t combined = (first << 32) | second;

uint32_t firstR = combined >> 32;
uint32_t secondR = combined & 0xffffffff;

std::cout << "F: " << firstR << " S: " << secondR << std::endl;
}

输出

F: 0  S: 7

如何成功地正确检索值?

最佳答案

first 是 32 位类型,您将其位移 32 位。这在技术上是未定义的行为,但可能最有可能的结果是表达式的结果为 0。您需要在对其进行位移之前将其转换为更大的类型。

uint64_t combined = (static_cast<uint64_t>(first) << 32) | second;

关于c++ - 为什么我不能将这些整数打包在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46187078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com