gpt4 book ai didi

c++ - 用 unit64_t 左移 - 发出警告

转载 作者:搜寻专家 更新时间:2023-10-30 23:52:00 25 4
gpt4 key购买 nike

我正在尝试执行以下操作。但是我不确定我可能哪里出错了

uint64_t x = (1 << 46); 
std::cout << x;

我明白了

-warning: left shift count >= width of type [-Wshift-count-overflow]

我得到输出 0。我期待像这样的二进制的十进制输出

1 0000........00 (46 0s) 

我的问题是为什么我会收到此警告? uint64_t 不是 64 位的吗?还有为什么我得到输出 0 ?

最佳答案

问题是您没有移动 64 位常量:1int 类型的常量,在您的平台上它小于 64 位(可能32 位;它是实现定义的)。

您可以通过围绕常量使用 UINT64_C 宏来解决此问题:

uint64_t x = (UINT64_C(1) << 46); 

关于c++ - 用 unit64_t 左移 - 发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52023223/

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