为什么在c中声明后使用clrscr()函数?

时间:2019-05-06 10:54:42

标签: c function

第一段:

#include <stdio.h>

void main()
{
    int a;
    clrscr();
}

第二个片段

#include <stdio.h>

void main()
{
    clrscr();
    int a;
}

哪个是正确的?

第一还是第二?

2 个答案:

答案 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,因此“最佳实践”是将其完全删除,使两个示例完全相同-从这个意义上说,您的问题对这两种选择均不佳。因为它没有说明任何一种做法的好处。