第一段:
#include <stdio.h>
void main()
{
int a;
clrscr();
}
第二个片段
#include <stdio.h>
void main()
{
clrscr();
int a;
}
哪个是正确的?
第一还是第二?
答案 0 :(得分:1)
是否符合标准?两者都不是。 main()
将返回int
,当您要表达一个函数不带参数时,参数列表应为void
:
int main(void)
或
int main(int argc, char **argv)
其他签名是实现定义的。
clrscr()
不是标准要求在<stdio.h>
中声明的函数。另外,自C99开始,不再需要在块的开头声明变量。应该将它们声明为尽可能靠近它们的使用位置。
答案 1 :(得分:1)
由于在函数调用中未使用a
,因此顺序无关紧要。两条语句彼此完全独立。
您将看到很多代码,其中在块的开头声明了 all 变量,因为在ISO C99之前需要这样做,并且旧习惯会死得很久,或者好的代码持续的时间比最初用于构建它的编译器。如果您维护的是旧系统,并且必须使用旧的编译器,则可能需要遵循此要求。
您将看到的许多代码将在 function 的开始处包含所有声明,而不是将其本地化为块。从来没有必要这样做,但这是一种普遍的做法或误解。
在块的任何位置声明变量的功能已引入C ++,并由C在ISO C99中采用。通常认为,最好是对变量进行尽可能多的本地化,因此请在使用变量的最外层范围内尽可能晚地声明它们。
在您的示例中,实际上根本没有使用变量a
,因此“最佳实践”是将其完全删除,使两个示例完全相同-从这个意义上说,您的问题对这两种选择均不佳。因为它没有说明任何一种做法的好处。