枚举变量的值的问题。默认情况下枚举变量与枚举变量表中的第一个常量的值一样?? 30
typedefenum{KeyScanState_0=0x00,KeyScanState_1=0x01,KeyScanState_2=0x02,}KeyScanState...
typedef enum
{
KeyScanState_0 = 0x00,
KeyScanState_1 = 0x01,
KeyScanState_2 = 0x02,
}KeyScanState_Typedef;
KeyScanState_Typedef KeyScanState;
请问,现在 KeyScanState的值是0X00??默认状态下和枚举变量与列表中的第一个常量的值一样? 展开
{
KeyScanState_0 = 0x00,
KeyScanState_1 = 0x01,
KeyScanState_2 = 0x02,
}KeyScanState_Typedef;
KeyScanState_Typedef KeyScanState;
请问,现在 KeyScanState的值是0X00??默认状态下和枚举变量与列表中的第一个常量的值一样? 展开
1个回答
展开全部
如果是声明的全局变量或者是静态的局部变量的话,没初始化,他就是0
但这个0跟枚举的第一个值是没有关系的,是系统默认设的一个值给他,
如果你设的是普通的局部变量,最好给他设个初始值,不然程序可能会出现问题。
你可以这样测试:
#include "stdio.h"
typedef enum
{
KeyScanState_0 = 0x01,//第一个值不设为0,设为1
KeyScanState_1 = 0x01,
KeyScanState_2 = 0x02,
}KeyScanState_Typedef;
KeyScanState_Typedef KeyScanState;//声明成全局变量
int main()
{
printf("%d\n",KeyScanState);
}
你会发现,他输出是0,不是枚举的第一个值1,所以说,不初始化他的值跟枚举值没有关系,因为枚举变量实际上是当成整型数来处理的,全局变量和静态局部变量(加static修饰)默认设为0,
但这个0跟枚举的第一个值是没有关系的,是系统默认设的一个值给他,
如果你设的是普通的局部变量,最好给他设个初始值,不然程序可能会出现问题。
你可以这样测试:
#include "stdio.h"
typedef enum
{
KeyScanState_0 = 0x01,//第一个值不设为0,设为1
KeyScanState_1 = 0x01,
KeyScanState_2 = 0x02,
}KeyScanState_Typedef;
KeyScanState_Typedef KeyScanState;//声明成全局变量
int main()
{
printf("%d\n",KeyScanState);
}
你会发现,他输出是0,不是枚举的第一个值1,所以说,不初始化他的值跟枚举值没有关系,因为枚举变量实际上是当成整型数来处理的,全局变量和静态局部变量(加static修饰)默认设为0,
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询