当前位置:  开发笔记 > 编程语言 > 正文

c ++枚举到unsigned int比较

如何解决《c++枚举到unsignedint比较》经验,为你挑选了1个好方法。

我在我正在编写的代码中发现了这一点,并认为这是我遇到的一些问题的原因.

在某处的标题中:

enum SpecificIndexes{
    //snip
    INVALID_INDEX = -1
};

然后 - 初始化:

nextIndex = INVALID_INDEX;

并使用

if(nextIndex != INVALID_INDEX)
{
    //do stuff
}

调试代码时,nextIndex中的值并没有完全显示(它们非常大),我发现它已声明:

unsigned int nextIndex;

因此,对INVALID_INDEX的初始设置是使unsigned int下溢并将其设置为一个巨大的数字.我认为这是导致问题的原因,但是仔细观察,测试

if(nextIndex != INVALID_INDEX)

行为正确,即,当nextIndex是"大+值"时,它从未执行if的主体.

它是否正确?这是怎么回事?枚举值是否被隐含地转换为与变量相同类型的unsigned int,因此以相同的方式包装?

干杯,

XAN



1> Robert Gould..:

一切都好.它是有效的代码,它也是常用的库侧C++代码,在现代C++中更是如此(当你第一次看到它时很奇怪,但实际上它是一种非常常见的模式).

然后枚举是有符号的整数,但它们被隐式地转换为无符号整数,现在这取决于你的编译器可能会发出警告,但它仍然非常常用,但是你应该明确地强制转换为使维护者清楚.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有