如何创建在C++中只存储2位的int?

use*_*687 2 c++ variables

有没有办法如何创建只能有3个值之一的变量?

我想创建一个返回三种可能状态之一的函数,我认为在这种情况下使用整数会不必要地占用内存中的大量空间.

那么,有没有什么方法可以创建在内存中只存储3位的变量,并且可以用作函数的返回值?如果是这样,请给我建议如何将其重写为更好的东西:

int ReturnOneOfThreeStates(){
     return 0 //Let's say 0=green, 1=red, 2=blue
}
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 13

有没有办法如何创建只能有3个值之一的变量?

你可以使用枚举:

enum TriState { One, Two, Three };
Run Code Online (Sandbox Code Playgroud)

在C++ 11中,您可以指定用于表示枚举的基础整数类型:

enum TriState : char { One, Two, Three};
Run Code Online (Sandbox Code Playgroud)

进一步的C++ 11精确是你可以强力输入:

enum class TriState : char { One, Two, Three};
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这实际上是引擎盖下的`int`(或者可能是`unsigned int`) (5认同)
  • 我会使用枚举,你甚至可以更直观地命名它们,如enum Color {GREEN,RED,BLUE}; (3认同)
  • 并且没有什么可以阻止你使用强制转换(或其他一些技巧)来分配一个没有出现的值.事实上,许多枚举都是以这种方式使用的. (2认同)