C为结构中的成员分配枚举值?

Dan*_*l D 0 c

我有2个枚举,2种颜色的颜色和13种车型的车型.我有一个汽车结构,有两个相应的成员.如果我的结构在数组中,如何通过循环分配枚举值?

enum carType {A, B, C, D, E, F, G, H, I, J, K, L, M};
enum color {BLACK, WHITE};

typedef enum carType CarType;
typedef enum color Color;

struct car {                                 
CarType myCarType;
Color myColor;
};                  

typedef struct car Car;

void createGarage(Car *garage)
{ 



}

main()
{ 
Car garage[26];
createGarage(garage);
}
Run Code Online (Sandbox Code Playgroud)

如何在我的车库阵列中循环,并确保每种车型都有黑色和白色两种颜色?

我知道我的车库阵列中有26个空格,所以我知道我可以使用for循环,但我怎么能完全完成任务呢?

Bar*_*mar 5

您应该为每个元素添加一个额外的元素来enum保存大小,这样您就可以循环遍历所有值.

enum carType {A, B, C, D, E, F, G, H, I, J, K, L, M, carType_size};
enum color {BLACK, WHITE, color_size};

void createGarage(Car *garage)
{ 
    for (int t = 0; t < carType_size; t++) {
        for (int c = 0; c < color_size; c++) {
            garage->carType = t;
            garage->color = c;
            garage++;
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

这取决于enums默认顺序分配值的事实0.如果你有一个enum用特定值覆盖它的地方,这将不起作用,但这是一种不常见的风格.