我有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);
}
如何在我的车库阵列中循环,并确保每种车型都有黑色和白色?
我知道我的车库阵列中有26个空格,所以我知道我可以使用for循环,但是我如何完成作业?
答案 0 :(得分: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++;
}
}
}
这取决于enum
默认从0
顺序分配值的事实。如果您使用特定值覆盖此值enum
,则此操作无效。但这种情况并不常见。