结构体,共用体,枚举

1.结构体

struct inflatale
{
    char name[20];
    float volume;
    double price;
  //std::string name;也可以将string对象作为成员的结构进行初始化。 };

inflable guest[2] =
{
  {"Bambi",0.5,21.00},
  {"Glorious Gloria",1.88,23.99}
};

2.共用体

  • 共用体同时只能存储一中类型的值,该值类型,是其成员类型。共用体的长度为其最大成员的长度。
union one4all
{
    int int_val;
    long long_val;
    double double_val;
}
关于匿名共用体的初始化
struct widget
{
  char brand[20];
  int type;
  union
  {
  long id_num;
  char id_char[20];
  };
};
widget price;
cin >> price .id_char

3.枚举

enum spectrum{red, orange, green, blue, violer, indigo, ultraviolet}
spectrum band;
band = red + orange; //red+orange将被转换为1+0,这是合法的,结果的类型是int
,但是类型不能赋给spectrum类型的band。
  • 可以创建多个值相同的枚举量。
  • 其中red,orange等作为符号常量,他们对应整数值是0~7,这些常量叫做枚举量。
  • 在不进行强制类型转换时,只能将枚举量赋给枚举类型的变量。
  • 枚举量是整型,可被提升为int类型,但int类型不能自懂转换为枚举类型。
  • 对于枚举说,只用声明中指出的那些值是能用的,但是,c++通过强制类型转换,增加了可赋给枚举变量的合法值。
enum bits{one = 1, two = 2, four = 4, eight = 8};
bits nyflag;
myflag = bits(6); //其中6不是枚举值,但它位于枚举定义的取值范围内。
  • 每个枚举都有取值范围,通过强制类型转换,可以将取值范围中的任何整数赋给枚举变量,即使这个值不是枚举值。
  • 枚举的取值范围:

    (1)知道枚举量的最大值,找到大于这个最大值的、最小的2的幂,将它减去1,得到的值便是取值范围的上限。例如bits的枚举量的最大值是8,它的上限就是15。

    (2)计算下限,需要知道枚举量的最小值,如果它不小于0,则取值范围的下限为0,否则,则采用与寻找上线相同的方式,在减去1之后,再加上负号。

    

原文地址:https://www.cnblogs.com/sjxbg/p/5670644.html