一开始我尝试着初始化了一个像这样的结构体:
struct {
char age[2]; // Hold two 1-Byte ages
} studage[] = {
{23, 56},
{44, 26}
};
但是这会导致编译器警告缺少大括号,所以我按照编译器的建议使用了更多的大括号,最终得到了下面的代码:
struct {
char age[2]; // Hold two 1-Byte ages
} studage[] = {
{{23, 56}},
{{44, 26}}
};
没有警告。为什么需要额外的大括号?
char
类型根据平台的不同可以是signed
或unsigned
。更安全的做法是使用unsigned char
(除非你正在处理一些根据某些物理模型可以具有负年龄的负能量反粒子)。 - Bathsheba