#include<stdio.h>
typedef enum {a,b,c}key;
int main()
{
key d=3;
printf("%p\n,&a);
printf("%p\n",&d);
printf("%d\t %d\t %d\t %d\n",a,b,c,d);
return 0;
}
当我尝试获取 a 或 b 或 c 的地址时 编译器抛出一元 & 需要左值的错误
我没有得到它,因为它适用于相同类型的 d。 这里发生了什么事 ?这些常量或 const 变量是由编译器分配的值 0 1 和 2。 因为这种错误我们只得到常量。 请帮忙,我是 C 的新手
最佳答案
看看什么是enum真的是。这是一个值(value)。请记住,如果您不初始化枚举列表,第一个枚举的值将是 0
。
考虑 bool 枚举示例:
typedef enum /* Declares an enumeration data type called BOOLEAN */
{
false, /* false = 0, true = 1 */
true
}BOOLEAN ;
所以枚举“false”是 0。你不能取 0 的地址,但是如果你从中得到一个“BOOLEAN”:
BOOLEAN something = false;
现在 something 是一个变量,你可以获取它的地址。
关于c - enum 是常数还是常数变量或其他什么?在以下代码中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953349/