簡體   English   中英

如何檢索枚舉類型變量中的元素?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM