c++学习笔记———枚举enum

#include <iostream>
int main()
{
    using namespace std;
    enum spectrum {red, orange, yellow, green, blue, violent, indigo, ultraviolent};
    //enum是创建符号常量的方式,这种方式可以替代const,
    //此处spectrum是新类型的名称,spectrum被称为枚举,就想struct变量称为结构一样
    //将red、orange等作为符号常量,它们对应整数值0~7,这些常量叫做枚举常量。
    
    //如果只打算使用常量,而不创建枚举类型的变量,则可以省略枚举类型的名称,如下
    enum {dhidh ,sjqidhq ,shidh1 ,dhw9h };

    //将默认情况下,将整数值赋给枚举量(但并非枚举类型就是整型,只是每个每个枚举量都对应一个整数值),第一个枚举量的值为0,第二个枚举量的值为1,
    spectrum band;
    band = blue;//在不进行强制类型转化的情况下,只能将定义枚举时使用的枚举量赋给这种枚举的变量。
    //band = 2000;//error
    //++band;//error ,对于枚举,只定义了赋值运算符,具体而言,没有为枚举定义算术运算符
    //band = organe + red;//error ,ditto
    int color = blue;
    //band = 3;//error 枚举量是整型,可以被提升成整型,但是int类型不能自动转化成枚举类型,3是整型,不能自动转化成枚举类型;
    color = 3 + red;//red是枚举量,对应的枚举量是0,枚举类型可以被提升为整型量。
    //这种情况下,枚举将被转化成int类型,因此可以在算术表达式中同时使用枚举和常规整数,尽管没有为枚举本身定义算术运算。
    //band = orange + red;//error ,原因是,确实没有为枚举定义运算符+,但是用于算术表达式中时,枚举将被转化成整数
    //orange+red被转化成1+0,但其类型是int类型,不能将其赋值给spectrum的变量band。
    band = spectrum(3);//如果int值有效,可以通过强制类型转化,将它赋给枚举变量
    

    //总结就是,枚举的规则十分严格,枚举更常被用来定义相关的符号常量,而不是新类型。
    
    ///设置枚举量的值
    enum bits{one = 1,two = 2,four = 4, eight = 8};//可以使用赋值运算符来显示地设置枚举量的值
    enum bigtep{first , second = 100, third};//也可以显式地定义其中一些枚举量的值
    //此时first在默认情况下为0,后面没有被初始化的枚举量将比其起前面的枚举量大1,因此,third的枚举量是101;
    enum {zero, null = 0, one, numero_uno = 1};
    //其中zero和null都为0,numero_uno和one都是1,

    //枚举的取值范围
    //可以将取值范围中任何变量都赋给枚举变量,即使这个值不是枚举量。
    //取值范围的计算方式:
    //1、找出上限,找到大于这个上限的最大值的2的幂,将它减去1,,例如上面的bigtep上限就是128-1=127,
    //如果最小值不小于0,那么取值范围的下限就是0,最小值小于0,采取与上限相同的方式,再加上负号,例如最小是-6,那么下限就是-7
    //(比6大的2的最小幂是8,8-1=7,加上负号就是-7)    
    
    
    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值