我正在尝试练习 C,但收到"initializer element is not constant"错误


#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 行,我在代码块中收到"初始值设定项元素不是常量"错误。我想知道这是为什么?我不是在处理大型对象,这就是其他堆栈流所说的错误所涉及的内容。如果我在 printf 之后初始化主函数中的第 3 行;但是,它构建并运行良好的代码,尽管代码很糟糕。

这是因为您在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
    }
}

根据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
   }
}

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

相关内容

最新更新