[英]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.