c - 枚举存储在哪里?

标签 c enums

结构具有逻辑存在性,并且在定义结构变量后才能生效。我想知道枚举的存储方式,它们在声明后立即生效。这仅仅是合乎逻辑的存在吗?

#include<stdio.h>
enum tag{
a,
b};
struct tag1 {
int temp;
}var;
int main(){
int a=9;
printf("%d %d\n",a,b);
printf("%d\n",var.temp);
}

我听说枚举没有存储在内存中,所以我的问题是b从何处获取其值。

最佳答案

在编译过程中,b将替换为其值(在您的情况下为1)。因此,它将以与常量相同的方式处理,并且不可能像变量一样获取其地址。

关于c - 枚举存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54528816/

相关文章:

c - 无锁算法的指针对齐

c++ - 将无符号变量的差异存储到有符号变量中

c - 什么时候应该使用引用传递而不是值传递?

c++ - 数组枚举和输入

c++ - 为枚举赋值

java - 如何在 switch case 中使用枚举类

c - 为什么段错误: 11 occurred for my C code?

c - 使用 fprintf 时,我在输出中得到镜像的字符数组

swift - 在 swift 4.2 中从公共(public)枚举访问内部枚举时出错

c# - C# 中枚举的替代方法 - 嵌套