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

为什么在c中声明后使用CLRSC()函数?,c,function,C,Function,第一段: #include <stdio.h> void main() { int a; clrscr(); } #包括 void main() { INTA; clrsc(); } 第二段 #include <stdio.h> void main() { clrscr(); int a; } #包括 void main() { clrsc(); INTA; } 哪一个是正确的 第一个还是第二个?是否符合标准?两者都不是main

第一段:

#include <stdio.h>

void main()
{
    int a;
    clrscr();
}
#包括
void main()
{
INTA;
clrsc();
}
第二段

#include <stdio.h>

void main()
{
    clrscr();
    int a;
}
#包括
void main()
{
clrsc();
INTA;
}
哪一个是正确的


第一个还是第二个?

是否符合标准?两者都不是
main()
应返回
int
,当您想要表示函数不带参数时,参数列表应为
void

int main(void)

其他签名由实现定义


clrsc()
不是标准要求在
中声明的函数。此外,从C99开始,不再需要在块的开头声明变量。它们应尽可能靠近使用位置进行声明。

是否符合标准?两者都不是
main()
应返回
int
,当您想要表示函数不带参数时,参数列表应为
void

int main(void)

其他签名由实现定义


clrsc()
不是标准要求在
中声明的函数。此外,从C99开始,不再需要在块的开头声明变量。它们应该尽可能地声明在使用它们的地方。

由于函数调用中未使用
a
,因此顺序是不相关的。这两种说法彼此完全独立

您将看到大量代码,其中所有变量都是在块的开头声明的,因为在ISOC99之前,这是必需的,要么旧习惯难以改变,要么好代码比最初用于构建它的编译器持续时间更长。如果您正在维护一个遗留系统,并且必须使用旧的编译器,那么您可能需要遵守这一点

您将看到的大量代码将在函数的开头包含所有声明,而不是在块中进行本地化。这从来没有必要,但这是一种常见的做法或误解

将块中任意点的变量声明为C++,并在ISOC99中采用C。通常认为最好的做法是尽可能多地本地化变量,以便在使用变量的最外层范围内尽可能晚地声明它们


在您的示例中,实际上根本没有使用变量
a
,因此“最佳做法”是将其完全删除,使两个示例完全相同-从这个意义上说,您的问题不能很好地说明这两个选项,因为它没有说明这两种做法的好处。

因为
a
在函数调用中未使用,顺序无关紧要。这两种说法彼此完全独立

您将看到大量代码,其中所有变量都是在块的开头声明的,因为在ISOC99之前,这是必需的,要么旧习惯难以改变,要么好代码比最初用于构建它的编译器持续时间更长。如果您正在维护一个遗留系统,并且必须使用旧的编译器,那么您可能需要遵守这一点

您将看到的大量代码将在函数的开头包含所有声明,而不是在块中进行本地化。这从来没有必要,但这是一种常见的做法或误解

将块中任意点的变量声明为C++,并在ISOC99中采用C。通常认为最好的做法是尽可能多地本地化变量,以便在使用变量的最外层范围内尽可能晚地声明它们


在您的示例中,实际上根本没有使用变量
a
,因此“最佳做法”是将其完全删除,使两个示例完全相同-从这个意义上讲,您的问题不能很好地说明这两种方法,因为它没有说明这两种方法的优点。

请注意,
main
可能是以实现定义的方式定义的,因此在某些环境中,
void main()
可以。但是,当然,除非有充分的理由,否则应该使用标准方法。但c99是什么呢?@NishantPatel。以下是C99语言标准草案:@NishantPatel:C99是指1999年批准的ISO语言标准的修订版。第一个官方标准于1989年批准,因此该版本被称为C89。1988年之前的语言版本通常被称为K&R C。最近的版本是在2011年批准的,所以你会看到人们谈论C11或C201。@JohnBode最近的版本是在2011年批准的–C18是在2018年6月发布的。请注意,
main
可能是以实现定义的方式定义的,因此,在某些环境中,
void main()。但是,当然,除非有充分的理由,否则应该使用标准方法。但c99是什么呢?@NishantPatel。以下是C99语言标准草案:@NishantPatel:C99是指1999年批准的ISO语言标准的修订版。第一个官方标准于1989年批准,因此该版本被称为C89。1988年之前的版本通常被称为K&R C。最近的版本是在2011年批准的,所以你会看到人们谈论C11或C201。@JohnBode最近的版本是在2011年批准的–C18是在2018年6月发布的。这个问题更“正确”如果您省略了
#include
,因此它显然是一个片段,并不打算完整-因为您没有包含
clrsc()
的声明。“我们”不使用
clrcr()
——您在该代码中使用;调用的特定函数与问题无关。问题的格式不正确,因为在本例中,
a
未使用,因此根本不需要存在。要使用clrsc()函数,应该包含“#include”。1)第二种形式仅在C11中有效。2) 我不知道