亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

精通C语言枚举:定义、声明与标志位操作

C语言枚举完全指南

探索如何在C中定义、声明并利用枚举——含实战示例、标志位技巧和大小洞察。

在C中,枚举(enum)是一组命名整型常量的类型,提供更清晰的意图和编译期类型安全。

enum flag {const1, const2, ..., constN};

默认 const1 为 0,const2 为 1,以此类推。声明时可覆盖这些值。

// 自定义枚举常量
enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3,
};

枚举类型声明

定义枚举创建可用于变量的新类型。声明与实例化示例:

enum boolean {false, true};
enum boolean check; // 变量声明

变量 check 现为 enum boolean 类型。值映射为 false=0、true=1。

enum boolean {false, true} check;

示例:星期枚举

#include <stdio.h>
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
int main() {
    enum week today = Wednesday;
    printf("Day %d", today + 1);
    return 0;
}

输出

Day 4

为何使用枚举?

枚举变量持有单一命名值,使代码自文档化。默认占用与 int 相同存储,典型平台上为 4 字节。

#include <stdio.h>
enum suit {club = 0, diamonds = 10, hearts = 20, spades = 3} card;
int main() {
    card = club;
    printf("Size of enum variable = %d bytes", sizeof(card));
    return 0;
}

输出

Size of enum variable = 4 bytes

此大小与底层 int 一致,确切大小因编译器和架构而异。


枚举用于标志位

枚举擅长表示标志位,当每个常量为不同的二的幂时。这允许用按位或组合标志,用按位与测试。

#include <stdio.h>
enum designFlags {ITALICS = 1, BOLD = 2, UNDERLINE = 4} button;

因值为二的幂:

// 二进制表示
ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

可组合:

#include <stdio.h>
enum designFlags {BOLD = 1, ITALICS = 2, UNDERLINE = 4};
int main() {
    int myDesign = BOLD | UNDERLINE; // 00000001 | 00000100 = 00000101
    printf("%d", myDesign);
    return 0;
}

输出

5

输出 5 表示 BOLD 和 UNDERLINE 均激活。

检查特定标志:

if (myDesign & ITALICS) {
    // 处理斜体
}

虽可不靠枚举实现许多结果,但枚举为管理相关常量提供了健壮、类型安全的方式——尤其适合标志位操作。


C语言

  1. C# Hello World — 构建你的第一个C#应用程序
  2. C#关键字与标识符:规则、完整列表与最佳实践
  3. 精通C#变量与基础数据类型:完整指南
  4. C#运算符——C#运算符全面指南
  5. 掌握 C# 位运算与移位运算符:全面指南
  6. C# 基础:输入输出核心技巧完全指南
  7. C# 表达式、语句与代码块:全面指南与实战示例
  8. 掌握 C# 注释:类型、最佳实践与 XML 文档注释
  9. 掌握 C# switch 语句:语法、示例与最佳实践
  10. C# 三元运算符:条件表达式简明指南
  11. C# break 语句:用法、时机与实战示例
  12. 掌握 C# continue 语句:高效跳过循环迭代的实战指南