c++ - C/C++ 创建一个带有负值的枚举,而不必对其编号

标签 c++ c enums

例如在 C/C++ 中,我会得到以下代码:

typedef enum fruits{
   apple,
   banana,
   lemon,
   orange
} fruit_t;

相当于:

typedef enum fruits{
   apple = 0,
   banana = 1,
   lemon = 2,
   orange = 3
} fruit_t;

但是,我希望这些值是负数,这样它们就不会与其他任何东西发生冲突。我可以这样做:

typedef enum fruits{
   apple = -1,
   banana = -2,
   lemon = -3,
   orange = -4
} fruit_t;

但是如果我想添加另一个水果,我必须分配另一个值,如果我在中间放一个,我必须重新编号它的大部分。有没有更简单的方法?

最佳答案

INT_MIN 开始像这样在上面:

#include <limits.h>

enum fruits
{
  orange = INT_MIN,
  lemon, 
  ...
}

根据 C11 标准 INT_MIN 的“5.2.4.2.1 整数类型的大小”和/或“附录 E/1”至少是 -32767 .

INT_MIN通过包含 <limits.h> 来定义.

关于c++ - C/C++ 创建一个带有负值的枚举,而不必对其编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027298/

相关文章:

c++ - 用于计算乘数和除数值的优化算法

c++ - 相当于 Solaris walkcontext 的 Linux

c++ - 如何删除以这种方式创建的缓冲区?

c - 我的程序(获取函数)有什么问题?

c++ - 如何定义递归类型?

c++ - 声明和定义不匹配

c - 如何在 Eclipse 中关闭多行注释中的 '*'?

haskell - 在 haskell 中将枚举转换为类似 int 的类型

JavaScript,定义不可修改的枚举

java - Python 中具有属性的枚举