39 C 语言枚举类型、枚举常量、枚举变量、枚举的遍历、枚举数组、枚举与 switch

目录

1 什么是枚举

2 定义枚举类型

2.1 语法格式

2.2 枚举元素的特点

2.3 案例演示

3 枚举变量

3.1 什么是枚举变量

3.2 定义枚举变量的多种方式

3.3 案例演示 1:标准版枚举类型

3.4 案例演示 2:简化版枚举类型

3.5 案例演示 3:匿名枚举类型

4 枚举的遍历

4.1 连续枚举常量的遍历

4.2 非连续枚举常量的遍历

4.2.1 手动遍历每个枚举常量

4.2.2 使用数组存储枚举常量

5 枚举在 switch 中使用

6 枚举数组


1 什么是枚举

        枚举(Enumeration)是 C 语言中的一种用户自定义数据类型,用于定义一组相关的常量。它允许为这些常量赋予有意义的名称,从而增强代码的可读性和可维护性。

        如果我们要定义一个变量来表示一周中的某一天,可以使用枚举类型来确保该变量的值仅限于七个预定义的有效值之中。这样能够有效地限制变量的取值范围,确保其准确性与合理性。


2 定义枚举类型

2.1 语法格式

        枚举类型使用 enum 关键字定义,通过为一组相关常量命名来创建一种新的数据类型。枚举名称(通常使用全大写表示)和其中的元素名称均为标识符(需要满足标识符的命名规则)。定义一个枚举就是定义了一种新的数据类型,其基本语法如下:

// 不指定值的枚举
enum 枚举名称 {
    枚举元素1,
    枚举元素2,
    ...
    枚举元素N
};  // 分号不要忘记

// 指定部分值的枚举
enum 枚举名称 {
    枚举元素1 = 值1,
    枚举元素2,
    ...
    枚举元素N
};  // 分号不要忘记

// 完全指定值的枚举
enum 枚举名称 {
    枚举元素1 = 值1,
    枚举元素2 = 值2,
    ...
    枚举元素N = 值N
};  // 分号不要忘记

        枚举类型可以在 main 函数外面定义,也可以在 main 函数里面定义

  • 将枚举类型定义在 main 函数外面(通常是文件的全局作用域),可以使枚举类型在整个文件中可见,便于在多个函数中使用。 
  • 将枚举类型定义在 main 函数内部,可以使枚举类型的作用域限制在 main 函数内,避免污染全局命名空间。

2.2 枚举元素的特点

        枚举元素,也称为枚举成员枚举常量,具有以下特征:

        唯一性在同一枚举类型中,每个枚举常量的值必须唯一,即不能有两个或多个枚举常量具有相同的值。

        整数类型枚举常量的值必须是整数类型,虽然在大多数编程语言中枚举常量本身不直接表现为整数,但在底层它们通常由整数(通常是 int 类型)表示。

        自定义值:定义枚举时,可以为枚举元素指定自定义的整数值,但需确保这些值的唯一性和整数类型。

        自动递增赋值 

  • 如果没有为枚举常量显式指定值,编译器会自动为它们分配值。这些值通常从 0 开始,依次递增。例如,在一个包含三个枚举常量的枚举类型中,第一个枚举常量会被分配值 0,第二个为 1,第三个为 2。
  • 如果为第一个枚举常量显式赋值,后续的枚举常量没有显式赋值,则后续枚举常量会从该值开始依次递增。例如,如果给第一个枚举常量显式赋值为 1,则第二个枚举常量的值默认为 2,第三个默认为 3,依此类推。
  • 如果中间的某个枚举常量显式赋了某个值,而下一个常量没有显式赋值,那么其默认值将从上一个枚举常量的值开始依次递增。例如,如果给第一个枚举常量显式赋值为 1,则第二个枚举常量的值默认为 2,再给第三个枚举常量显式赋值为 10,则第四个枚举常量的值默认为 11,依此类推。

2.3 案例演示

#include <stdio.h>

// 定义枚举类型,表示星期一到星期天,枚举元素的值自动分配,从 0 到 6
enum WEEKDAY
{
    MONDAY,    // 默认值为 0
    TUESDAY,   // 默认值为 1
    WEDNESDAY, // 默认值为 2
    THURSDAY,  // 默认值为 3
    FRIDAY,    // 默认值为 4
    SATURDAY,  // 默认值为 5
    SUNDAY     // 默认值为 6
};

// 定义枚举类型,表示一月到十二月,为第一个枚举元素 JANUARY 指定值 1,其余元素依次递增
enum MONTH
{
    JANUARY = 1, // 显式赋值为 1
    FEBRUARY,    // 默认值为 2
    MARCH,       // 默认值为 3
    APRIL,       // 默认值为 4
    MAY,         // 默认值为 5
    JUNE,        // 默认值为 6
    JULY,        // 默认值为 7
    AUGUST,      // 默认值为 8
    SEPTEMBER,   // 默认值为 9
    OCTOBER,     // 默认值为 10
    NOVEMBER,    // 默认值为 11
    DECEMBER     // 默认值为 12
};

// 定义枚举类型,表示北京地区一年四季的平均温度,为每个枚举元素指定特定值,需确保这些值的唯一性和整数类型
enum SEASON
{
    SPRING = 18, // 显式赋值为 18
    SUMMER = 30, // 显式赋值为 30
    AUTUMN = 20, // 显式赋值为 20
    WINTER = -5  // 显式赋值为 -5
};

// 定义枚举类型,测试自动递增赋值
enum EXAMPLE
{
    NUMA = 10, // 显式赋值为 10
    NUMB,      // 默认值为 11
    NUMC = 20, // 显式赋值为 20
    NUMD       // 默认值为 21
};

int main()
{

    return 0;
}

3 枚举变量

3.1 什么是枚举变量

        定义变量时,如果指定其类型为我们所定义的枚举类型,该变量就称为枚举变量。

        枚举变量的值必须是该枚举类型中的一个枚举常量,不能是其他值。如果是其他值,就失去了枚举的意义,不建议这么做。

3.2 定义枚举变量的多种方式

        第一种:先定义枚举类型,再定义枚举变量。

// 定义枚举类型
enum DAY {
    MON = 1,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
};

// 使用枚举类型定义枚举变量
enum DAY day;  // day 是变量名

        第二种:定义枚举类型的同时声明枚举变量。

enum DAY {
    MON = 1,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
} day;  // 直接跟上一个变量名称

enum DAY {
    MON = 1,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
} day = TUE; // 可以在这里直接进行赋值

enum DAY {
    MON = 1,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
} day1,day2; // 可以一次性声明多个变量

        第三种:定义枚举类型的同时声明枚举变量,且省略枚举名称。

enum            // 省略枚举名称
{ 
    MON = 1,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
} day = TUE;    // 可以在这里直接进行赋值

enum            // 省略枚举名称
{        
    MON = 1,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
} day1,day2;     // 可以一次性声明多个变量

3.3 案例演示 1:标准版枚举类型

#include <stdio.h>

// 定义枚举类型,表示星期一到星期天,枚举元素的值自动分配,从 0 到 6
enum WEEKDAY
{
    MONDAY,    // 默认值为 0
    TUESDAY,   // 默认值为 1
    WEDNESDAY, // 默认值为 2
    THURSDAY,  // 默认值为 3
    FRIDAY,    // 默认值为 4
    SATURDAY,  // 默认值为 5
    SUNDAY     // 默认值为 6
};

// 定义枚举类型,表示一月到十二月,为第一个枚举元素 JANUARY 指定值 1,其余元素依次递增
enum MONTH
{
    JANUARY = 1, // 显式赋值为 1
    FEBRUARY,    // 默认值为 2
    MARCH,       // 默认值为 3
    APRIL,       // 默认值为 4
    MAY,         // 默认值为 5
    JUNE,        // 默认值为 6
    JULY,        // 默认值为 7
    AUGUST,      // 默认值为 8
    SEPTEMBER,   // 默认值为 9
    OCTOBER,     // 默认值为 10
    NOVEMBER,    // 默认值为 11
    DECEMBER     // 默认值为 12
};

// 定义枚举类型,表示北京地区一年四季的平均温度,为每个枚举元素指定特定值,需确保这些值的唯一性和整数类型
enum SEASON
{
    SPRING = 18, // 显式赋值为 18
    SUMMER = 30, // 显式赋值为 30
    AUTUMN = 20, // 显式赋值为 20
    WINTER = -5  // 显式赋值为 -5
};

// 定义枚举类型,测试自动递增赋值
enum EXAMPLE
{
    NUMA = 10, // 显式赋值为 10
    NUMB,      // 默认值为 11
    NUMC = 20, // 显式赋值为 20
    NUMD       // 默认值为 21
};

int main()
{
    // 定义枚举变量并赋值
    // 枚举变量的值必须是该枚举类型中的一个枚举常量,不能是其他值
    enum WEEKDAY today = WEDNESDAY;
    enum MONTH currentMonth = OCTOBER;
    enum SEASON currentSeason = AUTUMN;
    enum EXAMPLE num = NUMD;

    // 输出枚举变量的值
    printf("今天是 %d \n", today);             // 输出 2
    printf("当前月份是 %d \n", currentMonth);  // 输出 10
    printf("当前季节是 %d \n", currentSeason); // 输出 20
    printf("当前数字是 %d \n", num);           // 输出 21

    // 修改枚举变量 today 的值为 FRIDAY
    // 枚举变量的值必须是该枚举类型中的一个枚举常量,不能是其他值。
    today = FRIDAY;
    printf("今天是 %d \n", today); // 输出 4

    // 修改枚举变量 num 的值为 100
    // 100 并不是枚举类型中的一个常量,这样做虽然不会报错,但失去了枚举的意义,不建议这么做
    num = 100;
    printf("当前数字是 %d \n", num); // 输出 100

    return 0;
}

3.4 案例演示 2:简化版枚举类型

        尽管这种方式简洁,但枚举类型名称仍然存在,可以在后续代码中使用该类型定义更多的变量

        对于复杂的枚举类型或需要在多个地方使用同一枚举类型的场景,建议使用标准的定义方法(即先定义枚举类型,再定义变量),以提高代码的可维护性和可扩展性。

#include <stdio.h>

int main()
{
    // 第一种方式:定义枚举类型并直接声明变量
    enum DAY
    {
        MON = 1,
        TUE,
        WED,
        THU,
        FRI,
        SAT,
        SUN
    } day1;

    // 初始化并使用枚举变量 day1
    day1 = WED;
    printf("今天是 %d \n", day1); // 输出 3

    // 修改 day1 的值
    day1 = FRI;
    printf("今天是 %d \n", day1); // 输出 5

    // 第二种方式:定义枚举类型并直接声明并初始化变量
    enum DAY2
    {
        MON2 = 1,
        TUE2,
        WED2,
        THU2,
        FRI2,
        SAT2,
        SUN2
    } day2 = TUE2;

    // 使用枚举变量 day2
    printf("今天是 %d \n", day2); // 输出 2

    // 第三种方式:定义枚举类型并一次性声明多个变量
    enum DAY3
    {
        MON3 = 1,
        TUE3,
        WED3,
        THU3,
        FRI3,
        SAT3,
        SUN3
    } day3,day4;

    // 初始化并使用枚举变量 day3 和 day4
    day3 = SAT3;
    day4 = SUN3;
    printf("今天是 %d \n", day3); // 输出 6
    printf("今天是 %d \n", day4); // 输出 7

    // 在后续代码中声明新的变量
    enum DAY anotherDay = SAT;
    printf("今天是 %d \n", anotherDay); // 输出 6

    return 0;
}

3.5 案例演示 3:匿名枚举类型

        由于匿名枚举类型没有名称,因此不能在其他地方重新使用相同的枚举类型定义新的变量。每次需要使用时都需要重新定义整个枚举类型。

        虽然匿名枚举类型可以减少一些冗余代码,但在大型项目中可能会影响代码的可读性和可维护性。建议在简单的情况下使用匿名枚举类型,而在复杂项目中使用带名称的枚举类型。

#include <stdio.h>

int main()
{
    // 定义匿名枚举类型并同时声明多个枚举变量
    enum
    {
        MON = 1,
        TUE,
        WED,
        THU,
        FRI,
        SAT,
        SUN
    } day1,day2, day3 = WED; // 同时声明多个枚举变量,并初始化 day3

    // 初始化并使用枚举变量 day1 和 day2
    day1 = MON;
    day2 = FRI;

    // 输出 day1, day2 和 day3 的值
    printf("day1 是 %d \n", day1); // 输出 1
    printf("day2 是 %d \n", day2); // 输出 5
    printf("day3 是 %d \n", day3); // 输出 3

    // 修改 day1 和 day2 的值
    day1 = TUE;
    day2 = SAT;

    // 再次输出 day1 和 day2 的值
    printf("day1 是 %d \n", day1); // 输出 2
    printf("day2 是 %d \n", day2); // 输出 6

    // 在后续代码中声明新的变量
    enum
    {
        MON2 = 1,
        TUE2,
        WED2,
        THU2,
        FRI2,
        SAT2,
        SUN2
    } anotherDay = SUN2;
    printf("anotherDay 是 %d \n", anotherDay); // 输出 7

    return 0;
}

4 枚举的遍历

4.1 连续枚举常量的遍历

        枚举常量的值如果是连续的,可以通过循环来遍历所有枚举常量。如果枚举常量的值不是连续的,则无法通过简单的循环来遍历,需要考虑其他方法。

#include <stdio.h>

int main()
{
    // 定义枚举类型 WEEKDAY,表示星期一到星期天,值从 1 开始
    enum WEEKDAY
    {
        MONDAY = 1,
        TUESDAY,
        WEDNESDAY,
        THURSDAY,
        FRIDAY,
        SATURDAY,
        SUNDAY
    };

    // 使用循环遍历出所有的枚举常量
    for (enum WEEKDAY day = MONDAY; day <= SUNDAY; day++)
    {
        printf("星期 %d \n", day);
    }

    return 0;
}

        输出结果如下所示:

4.2 非连续枚举常量的遍历

        对于非连续的枚举常量,由于它们的值不是连续的,不能通过简单的循环来遍历。但是,可以通过以下几种方法来实现遍历:

4.2.1 手动遍历每个枚举常量

        直接列出每个枚举常量并处理它们。

#include <stdio.h>

int main()
{
    // 定义枚举类型 SEASON,表示北京地区一年四季的平均温度
    enum SEASON
    {
        SPRING = 18,
        SUMMER = 30,
        AUTUMN = 20,
        WINTER = -5
    };

    // 尝试遍历非连续的枚举常量
    // 注意:这种遍历方式是错误的,因为枚举常量的值不是连续的
    // 下面这个循环一次都不会执行。因为循环条件一直都不满足
    for (enum SEASON season = SPRING; season <= WINTER; season++)
    {
        printf("季节 %d \n", season); // 不会执行
    }

    // 手动遍历每个枚举常量
    printf("季节 %d \n", SPRING);
    printf("季节 %d \n", SUMMER);
    printf("季节 %d \n", AUTUMN);
    printf("季节 %d \n", WINTER);

    return 0;
}

        输出结果如下所示:

4.2.2 使用数组存储枚举常量

        将枚举常量的值存储在一个数组中,然后遍历数组。

#include <stdio.h>

int main()
{
    // 定义枚举类型 SEASON,表示北京地区一年四季的平均温度
    enum SEASON
    {
        SPRING = 18,
        SUMMER = 30,
        AUTUMN = 20,
        WINTER = -5
    };

    // 使用数组存储枚举常量的值
    enum SEASON seasons[] = {SPRING, SUMMER, AUTUMN, WINTER};
    int num_seasons = sizeof(seasons) / sizeof(seasons[0]);

    // 遍历数组
    for (int i = 0; i < num_seasons; i++)
    {
        printf("季节 %d \n", seasons[i]);
    }

    return 0;
}

        输出结果如下所示:


5 枚举在 switch 中使用

        枚举可以与 switch 结合使用,通过枚举常量来控制不同的分支逻辑。以下是一个示例,展示了如何使用枚举和 switch 语句来处理用户输入的季节选择。

#include <stdio.h>

int main()
{
    // 定义枚举类型 SEASONS,表示四个季节
    enum SEASONS
    {
        SPRING = 1, // 春天
        SUMMER,     // 夏天
        AUTUMN,     // 秋天
        WINTER      // 冬天
    };

    // 定义枚举变量 season
    enum SEASONS season;

    // 获取用户输入
    printf("请输入你喜欢的季节: (1:spring, 2:summer, 3:autumn, 4:winter): ");
    scanf("%d", &season);

    // 使用 switch 语句判断用户输入的季节
    switch (season)
    {
    case SPRING:
        printf("你喜欢的季节是春天。\n");
        break;
    case SUMMER:
        printf("你喜欢的季节是夏天。\n");
        break;
    case AUTUMN:
        printf("你喜欢的季节是秋天。\n");
        break;
    case WINTER:
        printf("你喜欢的季节是冬天。\n");
        break;
    default:
        printf("你没有选择你喜欢的季节。\n");
        break;
    }

    return 0;
}

        在上面的示例中,使用 scanf 函数读取用户输入的整数值,并将其存储在枚举变量中。需要注意的是,用户输入的值必须是枚举常量的有效值,否则会进入 default 分支。


6 枚举数组

        枚举数组是指数组的元素类型为枚举类型。通过定义枚举数组,可以方便地管理和操作一组枚举常量。以下是一些关于枚举数组的示例和解释。

#include <stdio.h>

int main()
{
    // 定义枚举类型 SOLAR_TERMS,表示 24 节气
    enum SOLAR_TERMS
    {
        LICHUN = 1,  // 立春
        YUSHUI,      // 雨水
        JINGZHE,     // 惊蛰
        CHUNFEN,     // 春分
        QINGMING,    // 清明
        GUYU,        // 谷雨
        LIXIA,       // 立夏
        XIAOMAN,     // 小满
        MANGZHONG,   // 芒种
        XIAZHI,      // 夏至
        XIAOSHU,     // 小暑
        DASHU,       // 大暑
        LIQIU,       // 立秋
        CHUSHU,      // 处暑
        BAILE,       // 白露
        QIUFEN,      // 秋分
        HANLU,       // 寒露
        SHUANGJIANG, // 霜降
        LIDONG,      // 立冬
        XIAOXUE,     // 小雪
        DAXUE,       // 大雪
        DONGZHI,     // 冬至
        XIAOHAN,     // 小寒
        DAHAN        // 大寒
    };

    // 定义一个枚举数组,存储多个节气
    enum SOLAR_TERMS terms[] = {
        LICHUN, YUSHUI, JINGZHE, CHUNFEN, QINGMING, GUYU,
        LIXIA, XIAOMAN, MANGZHONG, XIAZHI, XIAOSHU, DASHU,
        LIQIU, CHUSHU, BAILE, QIUFEN, HANLU, SHUANGJIANG,
        LIDONG, XIAOXUE, DAXUE, DONGZHI, XIAOHAN, DAHAN};

    // 获取数组的大小
    int num_terms = sizeof(terms) / sizeof(terms[0]);

    // 遍历枚举数组并输出每个节气
    for (int i = 0; i < num_terms; i++)
    {
        switch (terms[i])
        {
        case LICHUN:
            printf("节气 %d: 立春\n", terms[i]);
            break;
        case YUSHUI:
            printf("节气 %d: 雨水\n", terms[i]);
            break;
        case JINGZHE:
            printf("节气 %d: 惊蛰\n", terms[i]);
            break;
        case CHUNFEN:
            printf("节气 %d: 春分\n", terms[i]);
            break;
        case QINGMING:
            printf("节气 %d: 清明\n", terms[i]);
            break;
        case GUYU:
            printf("节气 %d: 谷雨\n", terms[i]);
            break;
        case LIXIA:
            printf("节气 %d: 立夏\n", terms[i]);
            break;
        case XIAOMAN:
            printf("节气 %d: 小满\n", terms[i]);
            break;
        case MANGZHONG:
            printf("节气 %d: 芒种\n", terms[i]);
            break;
        case XIAZHI:
            printf("节气 %d: 夏至\n", terms[i]);
            break;
        case XIAOSHU:
            printf("节气 %d: 小暑\n", terms[i]);
            break;
        case DASHU:
            printf("节气 %d: 大暑\n", terms[i]);
            break;
        case LIQIU:
            printf("节气 %d: 立秋\n", terms[i]);
            break;
        case CHUSHU:
            printf("节气 %d: 处暑\n", terms[i]);
            break;
        case BAILE:
            printf("节气 %d: 白露\n", terms[i]);
            break;
        case QIUFEN:
            printf("节气 %d: 秋分\n", terms[i]);
            break;
        case HANLU:
            printf("节气 %d: 寒露\n", terms[i]);
            break;
        case SHUANGJIANG:
            printf("节气 %d: 霜降\n", terms[i]);
            break;
        case LIDONG:
            printf("节气 %d: 立冬\n", terms[i]);
            break;
        case XIAOXUE:
            printf("节气 %d: 小雪\n", terms[i]);
            break;
        case DAXUE:
            printf("节气 %d: 大雪\n", terms[i]);
            break;
        case DONGZHI:
            printf("节气 %d: 冬至\n", terms[i]);
            break;
        case XIAOHAN:
            printf("节气 %d: 小寒\n", terms[i]);
            break;
        case DAHAN:
            printf("节气 %d: 大寒\n", terms[i]);
            break;
        default:
            printf("未知节气\n");
            break;
        }
    }

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/890009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp学习(005-2 详解Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第41p-第p51的内容 文章目录 mainifest.json文件配置获取微信小程序appid注册微信小程序微信小程序控制台图形界…

22. 括号生成【回溯】

文章目录 22. 括号生成解题思路Go代码 22. 括号生成 22. 括号生成 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))",&quo…

node.js服务器基础

node.js的事件循环 node.js是基于事件驱动的&#xff0c;通常在代码中注册想要等待的事件&#xff0c;设定好回调函数&#xff0c;当事件触发的时候就会调用回调函数。如果node.js没有要处理的事件了&#xff0c;那整个就结束了;事件里面可以继续插入事件&#xff0c;如果有事…

手撕数据结构 —— 带头双向循环链表(C语言讲解)

目录 0.前言 1.什么是带头双向循环链表 理解带头 ​编辑 理解双向 理解循环 2.带头双向循环链表的实现 List.h文件中接口总览 具体实现 结点的定义 申请结点 初始化 打印链表 尾插 尾删 头插 头删 ​编辑​编辑 获取大小 查找 在指定位置前插入 ​编辑…

数据结构--线性表双向链表的实现

目录 思路设计 总体思维导图 插入部分 头插法尾插法 任意位置插入 删除部分 头结点 尾节点 中间节点 只有头结点且删除的就是头结点 ​编辑 清空链表部分 遍历清空链表的所有节点 不遍历清空 各部分代码 Main部分 MyListedList部分 IndexOutOfException部分 …

YOLO11改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 上下文Transformer&#xff08;CoT&…

WPF中的布局

布局原则 1、不显式设置元素大小。 2、不使用绝对定位。 元素应该根据容器的内容来进行排列。绝对定位在开发前期会带来一些便捷&#xff0c;但扩展性比较差。一旦显示器尺寸或分辨率发生改变&#xff0c;界面的显示效果可能会达不到预期的效果。 3、布局容器可以嵌套使用 常…

【Axure原型分享】标签管理列表

今天和大家分享通过标签管理列表的原型模板&#xff0c;包括增删改查搜索筛选排序分页翻页等效果&#xff0c;这个模板是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;初始数据我们只要在中继器表格里填写即可&#xff0c;具体效果可以观看下方视频或者打开预览地址…

【经管】上市公司供应链金融数据(1990-2023年)

上市公司供应链金融是指上市公司利用其产业链核心地位&#xff0c;通过整合金融资源&#xff0c;为供应链上下游企业提供包括融资、结算、风险管理等在内的综合金融服务。为了衡量上市公司的供应链金融水平&#xff0c;参考周兰等&#xff08;2022&#xff09;的研究方法&#…

【C++入门篇 - 3】:从C到C++第二篇

文章目录 从C到C第二篇new和delete命名空间命名空间的访问 cin和coutstring的基本使用 从C到C第二篇 new和delete 在C中用来向系统申请堆区的内存空间 New的作用相当于C语言中的malloc Delete的作用相当于C语言中的free 注意&#xff1a;在C语言中&#xff0c;如果内存不够…

IBM Flex System服务器硬件监控指标解读

随着企业IT架构的日益复杂&#xff0c;服务器的稳定运行对于保障业务连续性至关重要。IBM Flex System作为一款模块化、可扩展的服务器解决方案&#xff0c;广泛应用于各种企业级环境中。为了确保IBM Flex System服务器的稳定运行&#xff0c;监控易作为一款专业的IT基础设施监…

git维护【.gitignore文件】

在工程下添加 .gitignore 文件【git忽略文件】 *.class .idea *.iml *.jar /*/target/更多&#xff1a; # Compiled class file *.class# Log file *.log *.imi *.lst# BlueJ files *.ctxt# Mobile Tools for Java (J2ME) .mtj.tmp/# Package Files # *.jar *.war *.nar *.ea…

【MySQL 保姆级教学】数据库基础(重点)(2)

目录 1. 什么是数据库1.1 数据库的定义1.2 mysql 和 mysqld1.3 文件和数据库 2. 数据库的分类3. 连接数据库3.1 数据库的安装3.2 连接服务器&#xff08;数据库&#xff09;3.3 服务器 数据库 表 三者的关系 4. 数据库-表 和目录-文件 的关系5. MySQL 框架6. SQL 分类7. 储存引…

DDoS攻击快速增长,如何在抗ddos防护中获得主动?

当下DDoS攻击规模不断突破上限。前段时间&#xff0c;中国首款3A《黑神话&#xff1a;悟空》也在一夜之内遭受到28万次攻击DDoS攻击&#xff0c;严重影响到全球玩家的游戏体验。Gcore发布的数据也显示了 DDoS攻击令人担忧的趋势&#xff0c;尤其是峰值攻击已增加到了令人震惊的…

CNN-GRU时序预测 | MATLAB实现CNN-GRU卷积门控循环单元时间序列预测

时序预测 | MATLAB实CNN-GRU卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实CNN-GRU卷积门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 本次运行测试环境MATLAB2020b 提出了一种基于卷积神经网络(Convolutional Neural Network…

生成式专题的第一节课---GAN图像生成

一、GAN的起源与发展 1.GAN的起源 GAN &#xff08;生成式对抗网络&#xff09;诞生于 2014 年&#xff0c;由 Ian Goodfellow 提出&#xff0c;是用于生成数据的深度学习模型&#xff0c;创新点是对抗性训练&#xff0c;即生成器与判别器的竞争关系&#xff0c;为图像生成、…

【网络安全】利用XSS、OAuth配置错误实现token窃取及账户接管 (ATO)

未经许可,不得转载。 文章目录 正文正文 目标:target.com 在子域sub1.target.com上,我发现了一个XSS漏洞。由于针对该子域的漏洞悬赏较低,我希望通过此漏洞将攻击升级至app.target.com,因为该子域的悬赏更高。 分析认证机制后,我发现: sub1.target.com:使用基于Cook…

DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中?

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 原文链接&#xff1a;DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中? 如何将 (.mdf) 和 (.ldf) 的SQL Server 数据库文件导入到当前数据库中? Step 1.登录到 Sql Server 服…

Springboot——使用poi实现excel动态图片导入解析

文章目录 前言依赖引入导入实现方式一方式二 导出参考 前言 最近要实现一个导入导出的功能点&#xff0c;需要能将带图片的列表数据导出到excel中&#xff0c;且可以导入带图片的excel列表数据。 考虑到低代码平台的表头与数据的不确定性&#xff0c;技术框架上暂定使用Apach…

线性代数在大一计算机课程中的重要性

线性代数在大一计算机课程中的重要性 线性代数是一门研究向量空间、矩阵运算和线性变换的数学学科&#xff0c;在计算机科学中有着广泛的应用。大一的计算机课程中&#xff0c;线性代数的学习为学生们掌握许多计算机领域的关键概念打下了坚实的基础。本文将介绍线性代数的基本…