作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有没有办法让 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
;否则,您可以使用 UL
为 long
)。
关于c++ - 有没有办法让 `enum` 类型无符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732085/
我是一名优秀的程序员,十分优秀!