【问题标题】:Implicit conversion to/from an enum与枚举的隐式转换
【发布时间】:2016-12-01 21:58:46
【问题描述】:

这是一个基本的问题,我希望很容易地谷歌,但没有找到答案。

假设我有一个枚举:

enum abc { a, b, c };

支持的隐式转换有哪些?编译器之间是否有任何编译器扩展或不同的行为?

我问的是隐式转换为枚举:

enum abc test = (** which type can appear here? **);

以及来自枚举的隐式转换:

(** which type can appear here? **) test2 = test;

我想知道 C 和 C++ 的答案。

【问题讨论】:

  • 你应该让你的问题更具体,这很有趣。但是你知道这里可以出现哪种类型?int,对吧?
  • @iharob 总是这样吗? ideone.com/5WvR9K ...这就是我问的原因
  • @iharob 不能在shortsigned char_Booldouble 值范围内,如1e2
  • @chux 如果它们可以转换为int 我猜,是的!
  • 我怀疑 C 与 C++ 的答案是否不同,但如果它们是不同的,你更想知道哪一个?

标签: c++ c enums implicit-conversion


【解决方案1】:

正如参考所说:

无范围枚举类型的值可以隐式转换为整数类型

Reference link

【讨论】:

  • 这只是c++,至少参考是。答案可能适用于两者,但您可能应该在此处明确说明。特别是如果参考文献是这样说的。
  • 对于 C:“每个枚举类型都应与字符、有符号整数类型或无符号整数类型兼容。类型的选择是实现定义的,110) 但应能够表示值枚举的所有成员”
  • 反之亦然,您必须添加显式演员表。
猜你喜欢
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多