gpt4 book ai didi

c++ - 左移计数 >= 字宽

转载 作者:太空宇宙 更新时间:2023-11-04 05:18:32 25 4
gpt4 key购买 nike

我知道这是之前在堆栈溢出时被问到的问题,但我已经尝试了所有建议的解决方案,但没有任何效果。我的问题很简单,我正在尝试定义一个 unsigned long,它必须采用允许的最大可能值。

#define SIZEOF_ULONG (sizeof(long) * 8);
#define LARGEST_VALUE (1ULL << ((SIZEOF_ULONG)-1));

其中 ulong 被定义为 unsigned long。我收到一条警告,指出左移计数 >= 类型宽度。我在我的 64 位机器上检查了 unsigned long 的大小,它是 8B。最后,我尝试使用 -m64 标志进行编译,但都是徒劳的。

有什么想法吗?

最佳答案

发生错误,因为您的宏包含一个分号。首先修复这些错误,您的代码就会编译通过。

(我猜发出了关于移位的警告,因为编译器看到类似 1ull << 64; - 1 的东西。真正的错误是分号,但也发出了移位 64 位的警告。)

另外,请与类型保持一致。在您的短片段中,您混合使用了 unsigned long、unsigned long long ( ULL) 和 long。

关于c++ - 左移计数 >= 字宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23486224/

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