C++学习day 您所在的位置:网站首页 枚举类型使用什么定义的数据 C++学习day

C++学习day

2024-07-15 13:46| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有