C 为什么在括号外声明变量

C 为什么在括号外声明变量,c,C,下面是一个C函数。我不理解函数名后面的变量声明。在教科书中,函数名后面应该以花括号开头。但这里没有花括号,它声明了3个变量。有人能告诉我:这些变量是函数的局部变量吗?为什么它们不在花括号内 static long CheckBytes ( kind, byt, typ ) /*********************************************************************/ long kind ;

下面是一个C函数。我不理解函数名后面的变量声明。在教科书中,函数名后面应该以花括号开头。但这里没有花括号,它声明了3个变量。有人能告诉我:这些变量是函数的局部变量吗?为什么它们不在花括号内

static long CheckBytes ( kind, byt, typ )
/*********************************************************************/
  long               kind             ;
  long               byt              ;
  long               typ              ;
{
  long               byte             ;

  byte = 0 ;
  switch ( typ ) {
    case 1 :
      if ( kind == 1 ) {
        if ( byt >= 1 && byt <= 16 ) byte = byt / 4 ;
      }
      else {
        if ( byt >= 1 && byt <= 16 ) byte = byt / 2 ;
      }
      break ;
    case 2 :
      if ( kind == 2 ) {
        if ( byt >= 1 && byt <= 32 ) byte = byt ;
      }
      else {
        if ( byt >= 1 && byt <= 32 ) byte = byt ;
      }
      break ;
    case 3 :
      if ( kind == 1 ) {
        if ( byt >= 1 && byt <= 16 ) byte = byt / 4 ;
      }
      else {
        if ( byt >= 1 && byt <= 16 ) byte = byt / 2 ;
      }
      break ;
  }

  return ( byte ) ;
}
静态长校验字节(种类、字节、类型)
/*********************************************************************/
长类;
朗比特;
长型;
{
长字节;
字节=0;
开关(典型){
案例1:
如果(种类==1){

如果(byt>=1&&byt=1&&byt=1&&byt=1&&byt=1&&byt=1&&byt这是定义函数的旧方法。基本上

static long CheckBytes(kind,byt,typ)
  long kind;
  long byt;
  long typ;
{

static long CheckBytes(long kind,long byt, long typ) {

此函数是使用原始Kernighan和Ritchie语法定义的。它被认为是老式的,不再经常使用。更喜欢C89引入的较新样式(又称ANSI样式)语法:

static long CheckBytes(
     long               kind,
     long               byt,
     long               typ) { ,,,

看看答案这是一种非常古老的样式,它相当于“静态长校验字节(long-kind,long-byt,long-typ){/…}”