gpt4 book ai didi

c++ - 有没有办法让 `enum` 类型无符号?

转载 作者:可可西里 更新时间:2023-11-01 15:52:55 25 4
gpt4 key购买 nike

有没有办法让 enum 类型无符号?以下代码向我发出有关有符号/无符号比较的警告。

enum EEE {
X1 = 1
};

int main()
{
size_t x = 2;
EEE t = X1;
if ( t < x ) std::cout << "ok" << std::endl;

return 0;
}

我试图强制编译器使用以下枚举的无符号底层类型:

enum EEE {
X1 = 1,
XN = 18446744073709551615LL
// I've tried XN = UINT_MAX (in Visual Studio). Same warning.
};

但这仍然给出了警告。


将常量更改为 UINT_MAX 可以使其在 GNU C++ 中按照标准正常工作。似乎是VS中的错误。感谢 James 的提示。

最佳答案

你可以试试:

enum EEE {
X1 = 1,
XN = -1ULL
};

如果没有 U,整数字面值是有符号的。

(这当然假设您的实现支持 long long;我假设它支持,因为原始问题使用 LL;否则,您可以使用 ULlong)。

关于c++ - 有没有办法让 `enum` 类型无符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732085/

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