gpt4 book ai didi

C++ - 警告 : right shift count >= width of type on 32 bit machine

转载 作者:太空狗 更新时间:2023-10-29 19:40:28 25 4
gpt4 key购买 nike

我有以下功能:

void func(unsigned long v)
{
char max_byte = 0xFF;
char buffer[8];

buffer[0] = static_cast<char>((v) & max_byte);
buffer[1] = static_cast<char>((v >> 8) & max_byte);
buffer[2] = static_cast<char>((v >> 16) & max_byte);
buffer[3] = static_cast<char>((v >> 24) & max_byte);
buffer[4] = static_cast<char>((v >> 32) & max_byte);
buffer[5] = static_cast<char>((v >> 40) & max_byte);
buffer[6] = static_cast<char>((v >> 48) & max_byte);
buffer[7] = static_cast<char>((v >> 56) & max_byte);
}

它接受一个 unsigned long 参数并将它的 8 个字节插入到 char 缓冲区(不要试图找出原因。它是一个有意义的函数的简洁版本).

此代码在 64 位上编译良好,但在 32 位上我收到以下警告:

warning: right shift count >= width of type

引用线:

  buffer[4] = static_cast<char>((v >> 32) & max_byte);
buffer[5] = static_cast<char>((v >> 40) & max_byte);
buffer[6] = static_cast<char>((v >> 48) & max_byte);
buffer[7] = static_cast<char>((v >> 56) & max_byte);

我想我理解了这个警告,但我不确定我应该怎么做才能在 32 位上顺利编译它。

最佳答案

使用 fixed-width integer types .在这种情况下,您需要 std::uint64_t

关于C++ - 警告 : right shift count >= width of type on 32 bit machine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23567794/

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