【发布时间】:2010-04-28 18:15:55
【问题描述】:
有没有办法让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 的提示。
【问题讨论】:
-
@sbi,这不是重复的,因为 C++ 标准给出了关于如何将 undelying 类型更改为 unsigned int 的提示。我正在尝试使用它。
-
@Sbi,下次请复制并粘贴整个 URL。 Stack Overflow 会将其缩写为您发布的内容,但是当您包含整个内容时,我们可以获得显示问题标题(实际上是 URL 的其余部分)的工具提示,而无需访问链接。将您的评论与 James 的评论进行比较。
-
@Rob:你说得对,在这种情况下会更好。我养成了剪掉多余部分的习惯,因为 cmets 的空间有限。