C++学习day | 您所在的位置:网站首页 › 枚举类型使用什么定义的数据 › C++学习day |
1、枚举
1.1 枚举的概念
枚举是
C/C++
语言中的一种基本数据类型,
它可以用于声明一组常数
。当一个变量有几个固
定的可能取值时,可以将这个变量定义为枚举类型。 比如,你可以用一个枚举类型的变量来表示季节,因为季节只有 4
种可能的取值:春天、夏天、秋天、冬天。
1.2 枚举类型的定义
一般形式为:
enum
枚举名
{
枚举元素
1,
枚举元素
2,
……
};
enum Season {
spring,
summer,
autumn,
winter
};
注意,枚举类型的定义最后一个成员是没有逗号哦! 1.3 枚举变量的定义 前面只是定义了枚举类型,接下来就可以利用定义好的枚举类型定义变量,跟结构体一样, 有 3 种方式定义枚举变量 1. 先定义枚举类型,再定义枚举变量 enum Season { spring, summer, autumn, winter }; enum Season s; 2. 定义枚举类型的同时定义枚举变量 enum Season { spring, summer, autumn, winter } s; 3. 省略枚举名称,直接定义枚举变量 enum { spring, summer, autumn, winter } s; 上面三种方式定义的都是枚举变量 s 1.4 枚举使用的注意 1、 C 语言编译器会将枚举元素 (spring 、 summer 等 ) 作为整型常量处理,称为枚 举常量。 2、 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一 个枚举元素的值为 0 ,第二个为 1 ,依次顺序加 1 。 #include int main() { // 1.定义枚举类型 enum Season { spring, summer, autumn, winter }; // 2.定义枚举变量 enum Season s = winter; printf("%d\n", s); return 0; }运行结果: 打印结果为: 3 也就是说 spring 的值为 0 , summer 的值为 1 , autumn 的值为 2 , winter 的值为 3。枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为 0,第二个为 1,依次顺序加 1。 所以winter=3。 注意:枚举变量只能用枚举常量来赋值,用其他数值赋值会报错。 如: 枚举变量只能取定义的时候里面的成员值也可以在定义枚举类型时改变枚举元素的值: #include int main() { // 1.定义枚举类型 enum Season { spring = 1, summer, autumn, winter }; //2.定义枚举变量 enum Season s = winter; printf("%d\n", s); return 0; }运行结果: 打印结果为: 4 没有指定值的枚举元素,其值为前一元素加 1。 1.5 枚举变量的基本操作 1.赋值 可以给枚举变量赋枚举常量或者整型值 #include int main() { // 1.定义枚举类型 enum Season { spring, summer, autumn, winter } s; // 2.定义枚举变量 s = spring; // 等价于 s = 0; printf("%d\n", s); s = winter;//等价于 s = 3; printf("%d\n", s); return 0; }运行结果: 枚举类型的大小就是固定 4 个字节,不管是在位2 位平台还是在64 位平台,都是固定的 4个字节。这个和指针还不一样哦! 2.遍历枚举元素 #include int main() { enum Season { spring, summer, autumn, winter } s; // 遍历枚举元素 for (int i = spring; i 5)return; } test_B(); }testB.cpp #include #include "test.h" int kkk = 100; extern void test_B() { struct _pos pos; pos.x = 0; pos.y = 0; pos.w = 0; printf("我是 test_B.cpp => test_B() \n"); test_A(); }运行结果: 3.4头文件保护措施 #pragma once // 防止整个头文件被包含多次 #ifndef … #define … #endif // 防止 #ifndef 和 #endif 包围的代码包含多次 |
CopyRight 2018-2019 实验室设备网 版权所有 |