6

在 gcc-4.5 下,它打印 0,在 gcc-4.6 下,它打印 1。

#include <iostream>

enum VenueId: char {}; 
int
main (int argc, char ** argv)
{
  VenueId v = (VenueId)'P';
  std::cout << (v=='P') << std::endl;
  return 0;
}
4

1 回答 1

5

根据标准,VenuedIdchartype 作为基础 type,因此v应该包含 char 'P'v == 'P'应该产生true

§ 7.2 枚举声明

每个枚举都定义了一个不同于所有其他类型的类型。每个枚举也有一个基础类型。可以使用 enum-base 显式指定基础类型;如果未明确指定,则作用域枚举类型的基础类型是 int。在这些情况下,基础类型被称为是固定的。在数字说明符的右大括号之后,每个枚举器都有其枚举的类型。

于 2013-10-17T10:24:16.087 回答