我只使用 C99,昨天,我听说在 ANSI C 中无法混合使用多个声明和初始化。因此,代码如下:
unsigned x = 42, y = 21;
double e = 3.14;
会是,带有 gcc 的 -pedantic
标志:
unsigned x, y;
double e;
x = 42, y = 21;
e = 3.14;
我很惊讶,因为我在 C89 草案中没有找到任何关于它的信息,而且像这样的代码工作正常...
unsigned x = 42, y = 21;
double e = 3.14;
对不起,这似乎是一个微不足道的问题,但我做了一些研究,并没有告诉我关于这个规则...... 是真的吗?
最佳答案
初始化是声明的一部分,因此您可以在 C89/C99 的声明中进行初始化:
/* Valid in C89 and C99. There are no statement, only declarations */
unsigned x = 42, y = 21;
double e = 3.14;
你不能做的是在 C89 中混合语句和声明:
/* Not valid in C89, valid in C99: mixing declarations and statements */
unsigned x, y;
x = 42, y = 21;
double e;
e = 3.14;
关于c - 是否可以混合使用多个声明/初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11186464/