gpt4 book ai didi

c++ - 如何解决警告 C4333 ('>>' : right shift by too large amount, 数据丢失)

转载 作者:太空狗 更新时间:2023-10-29 20:18:09 27 4
gpt4 key购买 nike

我有以下函数可以将任意大小的整数转换为缓冲区:

template<typename T>
std::string build_data_from(T val)
{
std::string result;

for (int i = 0; i < sizeof(val); i++)
{
result.insert(0, 1, char(val));
val = val >> 8;
}

return result;
};

但是,使用 unsigned char 调用模板函数会在 Visual C++ 2008 中呈现警告:

std::string x(build_data_from<unsigned char>(1));

warning C4333: '>>' : right shift by too large amount, data loss

是否有任何干净的方法(不使用 pragma warning 指令)来解决它?

最佳答案

以下将消除警告。

改变

val = val >> 8;

val = val >> 7 >> 1;

val = (val >> 7 >> 1) & 0xff;

关于c++ - 如何解决警告 C4333 ('>>' : right shift by too large amount, 数据丢失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947308/

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