c – For循环表示在循环中初始化整数时表达式语法错误

前端之家收集整理的这篇文章主要介绍了c – For循环表示在循环中初始化整数时表达式语法错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编程时我遇到了一个不寻常的错误.当我在循环中初始化一个整数时,有时它表示该表达式无效,但有时它接受它.
这是我的代码,它给出了错误
int pow(int x,int n);
int main()
{
    int x,n,result;
    printf("Enter a number:\n");
    scanf("%d",&x);
    printf("Enter its power:\n");
    scanf("%d",&n);
    result=pow(x,n);
    printf("Result is %d\n",result);
    getch();
    return 0;
}
int pow(int x,int n)
{   
    for(int i=1;i<n;i++)   //<-- here it says that declaration Syntax error
    x=x*i;
    return x;
}

当我改变它时:

int pow(int x,int n)
{   
    int i;
    for(i=1;i<n;i++)  
    x=x*i;
    return x;
}

解决方法

C89和早期版本仅支持块头部的声明语句(IOW,开头{和声明之间唯一可能出现的是另一个声明):
/* C89 and earlier */
int main(void)
{
  int x;                      /* this is legal */
  ...
  for (x = 0; x < 10; x++)
  {
    int i;                    /* so is this */
    printf("x = %d\n",x);
    int j = 2*x;              /* ILLEGAL */
  }
  int y;                      /* ILLEGAL */
  ...
}

使用C99,声明语句几乎可以出现在任何地方,包括控制表达式(需要注意的是在使用之前必须声明某些内容):

// C99 and later,C++
int main(void)
{
  int x;                       // same as before
  ...
  for (int i = 0; i < 10; i++) // supported as of C99
  {
    printf("i = %d\n",i);
    int j = 2 * i;             // supported as of C99
  }
  int y;                       // supported as of C99
}

Turbo C早于C99标准,因此如果您想编写第二个示例中的代码,则需要使用更新的编译器.

猜你在找的C&C++相关文章