使用具有相同值的枚举器将枚举数分配给枚举类型

时间:2013-11-18 19:43:35

标签: c++ variable-assignment enumeration

鉴于此枚举和作业:

enum Points {point2d = 2, point2w, point3d = 3, point3w};
Points pt3d = point3d;

在刚刚超过此赋值的断点处,调试器报告pt3d的值为point2w。为什么不指向point3d?

2 个答案:

答案 0 :(得分:2)

enum Points {point2d = 2, point2w, point3d = 3, point3w};
Points pt3d = point3d;

如果您没有为point2w设置值,则会继续增加,然后point2d = 2point2w将等于point3dpoint3w将等于4,因为point3d设置为3。

您应该阅读this about enum

希望对你有所帮助。

答案 1 :(得分:2)

enum只是为枚举设置花哨的,编译时间类型安全名称的一种方法。会发生的是,每个枚举值都会被赋予一个数字整数值:

enum Points
{
  // Explicitly map point2d to value 2.
  point2d = 2,

  // Let point2w get an automatic mapping - will be previous + 1 = 3.
  point2w,

  // Explicitly map pint3d to value 3.
  point3d = 3,

  // Let point3w get an automatic mapping - will be previous + 1 = 4.
  point3w
}

因此,对于运行时,语句Points pt3d = point3dPoints pt3d = 3相同。显示时,调试器只需将第一个枚举值映射为反复数据3,即point2w