我正在尝试练习C,但我收到一个"初始化元素不是常数"错误

时间:2014-09-28 18:25:16

标签: c element codeblocks initializer

#include <stdio.h>

int numero=6;
int numerodos=4;
int result=numero*numerodos;

main()
{
    while (result<200) {
        printf("The product of %d and %d is %d", numero, numerodos, result);
        result=result+1
    }
}

我知道算法很糟糕,我并不专注于此。但在第3行,我在Codeblocks中得到“初始化元素不是常数”错误。我想知道为什么会这样?我不处理大型对象,这就是其他stackflow所说的错误所涉及的内容。如果我在printf之后初始化main函数中的第3行;然而,它构建并运行良好,虽然可怕的代码。

3 个答案:

答案 0 :(得分:0)

这是因为你初始化并给出main()

之外的另一个变量的值

试试这个:

#include <stdio.h>

int numero=6;
int numerodos=4;
int result=0;

main()
{
result=numero*numerodos;
while (result<200) {
    printf("The product of %d and %d is %d", numero, numerodos, result);
    result=result+1; // BE CAREFUL, ADD THIS SEMICOLON
    }
}

答案 1 :(得分:0)

根据C标准(6.7.9初始化)

  

4具有静态的对象的初始值设定项中的所有表达式   或线程存储持续时间应为常量表达式或字符串   文字。

和(6.6常量表达式)

  

2可以在翻译期间评估常量表达式   比运行时,因此可以在任何恒定的地方使用   可能是

考虑到没有必要将程序中的变量声明为全局变量。你可以写

#include <stdio.h>

int main( void )
{
   int numero=6;
   int numerodos=4;
   int result=numero*numerodos;


   while (result<200) {
      printf("The product of %d and %d is %d", numero, numerodos, result);
      result=result+1
   }
}

答案 2 :(得分:0)

在这里,您试图动态初始化变量,但在C中是不可能的。 在C中,只能在初始化时为变量分配一个常量值(任何no,string)。 它可以用c ++或java完成。