分配int x ='abc';

bob*_*obo 2 c++

我正在进行代码审查,我看到将单引号字符串赋值给枚举值:

enum
{
  Option_1 = 'a',
  Option_2 = 'b'
} ;

虽然这使得代码稍微可读(尽管枚举的含义应该与num的名字相当),但对我来说这看起来很愚蠢.

我不知道你可以这样做,在研究之后,我可以看到发生的一切都是你正在使用的"字符"的二进制值被抛入int.

在实践中有没有其他人这样做?或者这是一个不好的做法?

Pav*_*aev 8

根据ISO C和C++标准,它绝对是完全合法的.如果将这些枚举值序列化为文本(例如CSV)文件作为那些字符,则这是一种相当合理的做法.否则,我没有看到太多意义.我想它可以带来一些调试优势,但我知道的所有好的C/C++调试器都可以将枚举值解析为相应的符号.


Chu*_*uck 8

不是单引号字符串 - 它是一个字符文字.使用在枚举字符文字基本上是一样分配charint-这是完全合法的,并可以在许多情况下非常有用.


小智 6

它对我来说没问题,你愿意:

enum
{
  Option_1 = 97,
  Option_2 = 98
} ;
Run Code Online (Sandbox Code Playgroud)


Coo*_*une 5

字符只有1个字节,所以为什么不呢?