[英]How to retrieve elements in an enum type variable?
编译代码时,它不会在结构中显示插入到enum变量中的值
此代码仅显示键盘输入0或1
#include<stdio.h>
#define Max_CHARS_NAME 100
struct gps_point{
double latitude;
enum latitude_pole {North,South} pole;
double longitude;
enum longitude {East,West} dire;
char location_name[Max_CHARS_NAME];
}g;
int main(){
char arr[Max_CHARS_NAME];
int i = 0;
printf("Enter location\n");
scanf("%s", &g.location_name);
strcpy(arr,g.location_name);
printf("Enter latitude\n");
scanf("%lf", &g.latitude);
printf("Enter latitude pole North - 0, South - 1\n");
scanf("%d",&g.pole);
//g.latitude_pole = g.pole;
printf("Enter longitude dire East - 0, West - 1\n");
scanf("%d", &g.dire);
printf("Enter longitude\n");
scanf("%s", &g.longitude);
printf("%s is situated at (Latitude : %s %lf , Longitude: %s %lf). \n",arr,g.pole,g.latitude,g.dire,g.longitude);
return 0;
}
请参阅以下示例,
enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
int main()
{
enum week day;
day = Wed;
printf("%d",day);
return 0;
}
在这里,我们声明一个类型为week的变量day,并使用“字符串”将列表中的一个(数字)值分配给该变量,但无法执行其他方法。
这相当于
enum latitude_pole {
North = 0,
South = 1
} pole;
这定义了可变pole
其可能值为North(0)和South(1)。
相当于写作
enum latitude_pole {
North = 0,
South
} pole;
因为如果您初始化一个成员,那么下一个成员将是+1
(先前的成员)。
在您的代码中,缺少初始化将使其默认情况下为第一个成员插入值0,为第二个成员插入值1。
如果您不给枚举常量任何值,则编译器将以静默方式进行操作。
第一个始终将被赋予值0
,每个随后的枚举常量将获得先前常量+ 1的值。
在您的情况下{North,South}
,保证North
为0,并且South
保证为1。这些枚举常量的类型保证与int
100%兼容。
如果您只明确键入了一些值,则该规则适用于每个常量获取前一个+ 1的值的规则。 因此,如果您执行{North,South,East=5,West}
,则它们将获得值0, 1, 5, 6
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.